Map a list of strings with JPA/Hibernate annotations
This is in Hibernate terms a "collection of values" or "elements". There is a (Hibernate specific) annotation for it. JPA does not support this (yet).
In short, annotate your collection like this:
@CollectionOfElements
@JoinTable(
table=@Table(name="..."),
joinColumns = @JoinColumn(name="...") // References parent
)
@Column(name="...value...", nullable=false)
This will create the necessary table with foreign keys and restrictions.
Here is how you would do this if you are using JPA2:
@Entity public class Bar {
@Id @GeneratedValue long id;
@ElementCollection
@CollectionTable(name="foo_bars", joinColumns=@JoinColumn(name="bar_id"))
@Column(name="foo")
List<String> Foos;
}
For a clearer example see section 2.2.5.3.3 in the Hibernate Annotations Reference Guide.
If you store your list as an array, it works:
setFoos(String[] foos);
you can transform it like this:
setFoos(myList.toArray(new String[myList.size()]));