JPA: дать имя внешнему ключу в БД? - PullRequest
5 голосов
/ 07 июля 2011

У меня есть простые вопросы.Как я могу дать имя отношениям внешнего ключа, которые возникают из аннотации @ ManyToOne?

Ответы [ 4 ]

9 голосов
/ 08 мая 2015

С JPA 2.1 вы можете просто сделать это с аннотацией foreignKey :

import javax.persistence.ForeignKey;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@ManyToOne
@JoinColumn(name = "company_id", nullable = false, foreignKey = @ForeignKey(name="FK_COMPANY__ROUTE"))
private Company company;

Не путайте с устаревшим эквивалентом спящего режима

4 голосов
/ 29 января 2014

Начиная с JPA 2.1 можно определять внешние ключи с помощью аннотации @ ForeignKey .

К сожалению, это не очень полезно, если вам нужно только изменить имя. Если вы указываете произвольное имя FK, вы также должны указать определение FK в SQL. По крайней мере, так работает EclipseLink 2.5.0.

3 голосов
/ 08 июля 2011

Если вас интересует наименование столбца, используемого во внешнем ключе, можно указать имя столбца, используемого для создания внешнего ключа, используя аннотацию @JoinColumn вместе с аннотацией @ManyToOne.Значение атрибута name аннотации @JoinColumn используется поставщиком JPA для сопоставления имени столбца в таблице с атрибутом сущности.

Однако имя ограничения внешнего ключа создало само себяне может быть настроен.На момент написания этой статьи невозможно указать имя ограничения внешнего ключа с помощью аннотации JPA или параметра конфигурации в файлах сопоставления OR.Если вам нужно изменить имя ограничения внешнего ключа, то вы должны сами создать оператор DDL, вместо того чтобы полагаться на этого у поставщика JPA.

0 голосов
/ 12 июня 2015

Я думаю, что @ForeignKey не работает с @JoinTables, или я не знаю, как установить пользовательские имена, я попробовал это на @ JoinTable-> foreignKey и @ JoinColumn-> foreignKey

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...