如何使用JPA注释映射一组字符串对象?

ScA*_*er2 6 java hibernate jpa

@Entity
public class TestClass implements Serializable{
    private Integer id;
    private Set<String> mySet;

    @Id
    @GeneratedValue
    public Integer getId() {
        return id;
    }
    @OneToMany(cascade={CascadeType.ALL})
    public Set<String> getMySet() {
        return mySet;
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误.

Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: TestClass.mySet[java.lang.String]
Run Code Online (Sandbox Code Playgroud)

或者如果我离开@OneToMany

org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: test_class, for columns: [org.hibernate.mapping.Column(my_sets)]

Cog*_*gsy 7

你会在这里找到一个相当不错的答案.列表规则也适用于集合.


Jos*_*hua 6

哦,我必须这样做.

@CollectionOfElements(targetElement = String.class)
Run Code Online (Sandbox Code Playgroud)

  • JPA2 中的 @ElementCollection,这个答案是更好的方法。请参阅http://stackoverflow.com/questions/287201/how-to-persist-a-property-of-type-liststring-in-jpa (2认同)