ScArcher2
ScArcher2

Reputation: 87187

How do I map a set of string objects using JPA Annotations?

@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;
    }
}

I get the following error.

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

or if I leave off the @OneToMany

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

Upvotes: 7

Views: 31574

Answers (2)

Joshua
Joshua

Reputation: 493

Ooh oh, I had to do this one.

@CollectionOfElements(targetElement = String.class)

Upvotes: 6

Cogsy
Cogsy

Reputation: 5642

You'll find a pretty decent answer here. The rules for Lists apply to Sets too.

Upvotes: 8

Related Questions