2009-05-28 2 views
6
@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; 
    } 
} 

Ich bekomme den folgenden Fehler.Wie ordne ich einen Satz von String-Objekten mithilfe von JPA-Anmerkungen zu?

Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: TestClass.mySet[java.lang.String] 

oder wenn ich die @OneToMany wegzulassen

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

+0

Hibernate Annotations @CollectionOfElements löste das Problem für mich. Es ist Winterschlaf spezifisch, aber ich plane nicht, meine JPA-Implementierung auszuwechseln. – ScArcher2

Antwort

6

Sie erhalten eine ziemlich anständige Antwort here finden. Die Regeln für Listen gelten auch für Sets.

5

Oh oh, ich musste dies tun.

@CollectionOfElements(targetElement = String.class) 
+0

Dies war auch, was ich tun musste, aber es ist Winterschlaf spezifisch. In meiner Situation ist das in Ordnung für mich. – ScArcher2

+1

@ElementCollection in JPA2, diese Antwort ist der bessere Ansatz. siehe http://stackoverflow.com/questions/287201/how-to-persist-a-property-of-type-liststring-in-jpa – pdem