Это - подобная проблема для "Спящего режима @OneToMany без отдельной объединяющей таблицы", в этом мне нужны @OneToMany отношения без объединяющей таблицы. Однако я также хотел бы не определить обратную связь. Удаление инверсии, кажется, приводит к объединяющей таблице, автоматически сгенерированной... там обходное решение для этого?
в JPA 2.0+ вы можете использовать @joincolumn как способ избежать генерировать присоединенный стол.
Попробуйте.
@OneToMany
@JoinColumn(name="COLUMN_NAME")
Обновление
Информация, представленная выше, была извлечена из EJB 3.0 O'Reilly Cooke (ищите аннотацию @joincolumn, ссылки на столбец Customer_id в телефонной таблице). Тем не менее, обычная спецификация JPA 1.0 не поддерживает эту функцию. То, что он говорит, это
однонаправленные отношения однозначные отношения могут быть реализованы с использованием однозначных сопоставлений внешних ключей, такая поддержка не требуется в этом выпуске. Приложения, которые хотят использовать стратегию отображения внешних ключей для однозначных отношений , должны делать эти отношения двунаправленными для обеспечения портативности
, так что в 1.0 это специальная поставщика (и это Имеет смысл, автор работает на jboss - красная шляпа, поднимающаяся за гибернатом)
, но , но поддерживается реализацией JPA 2.0
, если присоединение предназначено для однонаправленного онообразования OneTomany, используя стратегию отображения внешних ключей, Внешний ключ находится в таблице целевой организации .
Спецификация JPA 1.0 НЕ поддерживает однонаправленное отображение OneToMany без таблицы соединения .
А использование JoinColumn
на OneToMany
запрещено в стандарте JPA 1.0 (только на OneToOne
, ] ManyToOne
или ManyToMany
). Хотя это в JPA 2.0.
Из спецификации JPA 1.0:
2.1.8.5.1 Однонаправленные отношения OneToMany
Применяются следующие значения по умолчанию для сопоставления:
Объект A отображается в таблицу с именем
A
. Сущность B сопоставлена с таблицей названныйB
. Есть соединительный стол с именемA_B
(имя владельца первый). В этой соединительной таблице есть два столбцы внешнего ключа. Один внешний ключ столбец ссылается на таблицуA
и имеет тот же тип, что и первичный ключ таблицыA
. Имя этого внешнего ключа столбец формируется как конкатенация из следующего: название юридического лица А; "_"; имя первичного ключа столбец в таблицеA
. Другой иностранный ключевой столбец относится к таблице B и имеет того же типа, что и первичный ключ таблицаB
и есть уникальный ключ ограничение на это. Имя этого столбец внешнего ключа формируется как конкатенация следующего: имя свойства отношения или поле сущности A; "_"; имя столбец первичного ключа в таблицеB
.
Подводя итог, можно сказать, что если вам не нужна таблица соединений (и полная поддержка чтения / записи), но при этом она должна быть совместимой с JPA, сделайте ассоциацию двунаправленной (со стороной , обратной
).
В приведенной ниже ссылке на вики-книгу обсуждается трюк (сопоставление целевой таблицы с таблицей соединения), позволяющий «обойти» проблему, но это работает только для чтения, запись не будет работать.