Как иметь 2 коллекции одного типа в JPA?(EclipseLink) - PullRequest
2 голосов
/ 11 марта 2011

Хотите знать, как делать то, что указано в Как иметь 2 коллекции одного типа в JPA? , но с EclipseLink, а не с Hibernate.Смотрите этот пост ниже:

У меня есть 2 сущности в JPA: запись и комментарий.Запись содержит две коллекции объектов Comment.

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@IndexColumn(base = 1, name = "dnr")
private List<Comment> descriptionComments = new ArrayList<Comment>();

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@IndexColumn(base = 1, name = "pmnr")
private List<Comment> postMortemComments = new ArrayList<Comment>();

Для хранения таких объектов JPA + Hibernate создает таблицу «Entry», таблицу «Comment» и SINGLE «Entry_Comment»:

создать таблицу Entry_Comment (целое число Entry_id не равно нулю, целое число postMortemComments_id не равно нулю, целое число pmnr не равно нулю, целое число descriptionComments_id не равно нулю, целое число dnr не равно нулю, первичный ключ (Entry_id, dnr), уникален (descriptionComments_id), уникален (postMore)

Ошибка сохранения объектов, так как descriptionComments_id и postMortemComments_id не могут быть «ненулевыми» одновременно.

Как сохранить объект, содержащий две коллекции одного типа, с использованием JPA + Hibernate?

Я уверен, что преобразовать это решение в EclipseLink довольно просто, но я не могу понять это.Спасибо

1 Ответ

3 голосов
/ 11 марта 2011

Вы можете явно указать имена таблиц соединения с помощью @JoinTable

...