Это в условиях гибернации «набор значений» или «элементы». Для него есть аннотация (для Hibernate). JPA не поддерживает это (пока).
Короче, аннотируйте вашу коллекцию следующим образом:
@CollectionOfElements
@JoinTable(
table=@Table(name="..."),
joinColumns = @JoinColumn(name="...") // References parent
)
@Column(name="...value...", nullable=false)
Это создаст необходимую таблицу с внешними ключами и ограничениями.
Вот как бы вы это сделали, если используете 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;
}
Более ясный пример см. В разделе 2.2.5.3.3 в Справочное руководство по аннотациям в спящем режиме .
создать сущность 'FooBars'
рефакторинг атрибута 'Foos' для
@OneToMany Список Foos
I'm think it's that what you need:
@Entity
public class Bar {
@Id @GeneratedValue long id;
@OneToMany(mappedBy="bar") //"bar" = field name in mapping class
List<FooBar> Foos;
}
@Entity
public class FooBar {
@Id @GeneratedValue long id;
@ManyToOne
@JoinColumn(name="bar_Id")
Bar bar;
}
Если вы храните свой список в виде массива, он работает:
setFoos(String[] foos);
вы можете преобразовать его следующим образом:
setFoos(myList.toArray(new String[myList.size()]));