Отобразите список строк с аннотациями JPA/Hibernate

21
задан danb 28 April 2009 в 14:22
поделиться

5 ответов

Это в условиях гибернации «набор значений» или «элементы». Для него есть аннотация (для Hibernate). JPA не поддерживает это (пока).

Короче, аннотируйте вашу коллекцию следующим образом:

@CollectionOfElements
@JoinTable(
        table=@Table(name="..."),
        joinColumns = @JoinColumn(name="...") // References parent
)
@Column(name="...value...", nullable=false)

Это создаст необходимую таблицу с внешними ключами и ограничениями.

27
ответ дан 16 October 2019 в 23:39
поделиться

Вот как бы вы это сделали, если используете 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 в Справочное руководство по аннотациям в спящем режиме .

28
ответ дан competent_tech 16 October 2019 в 23:39
поделиться

создать сущность 'FooBars'

рефакторинг атрибута 'Foos' для

@OneToMany Список Foos

0
ответ дан 16 October 2019 в 23:39
поделиться

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;
}
0
ответ дан 16 October 2019 в 23:39
поделиться

Если вы храните свой список в виде массива, он работает:

setFoos(String[] foos);

вы можете преобразовать его следующим образом:

setFoos(myList.toArray(new String[myList.size()]));
4
ответ дан 16 October 2019 в 23:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: