Как создать отношение к одной и той же сущности с JPA (Hibernate)? - PullRequest
0 голосов
/ 21 июля 2010

У меня есть объект User, и у него должно быть свойство manager, где менеджер - это другой пользователь (один менеджер может управлять многими пользователями, любой пользователь может иметь только 1 менеджера или не иметь его).

Как я могу это реализовать?

Я пробовал что-то стандартное

@ManyToOne
@JoinColumn (name = ??? /* what should be here? */, nullable = true)
private User manager;

, но это не так просто, как кажется ..

Ответы [ 3 ]

3 голосов
/ 21 июля 2010

Это должно работать:

@OneToOne
@JoinColumn(name="manager")
private User manager;
2 голосов
/ 21 июля 2010

В чем проблема?Используйте значение по умолчанию, т.е. не устанавливайте name, если вы не знаете, как назвать столбец соединения (по умолчанию следует использовать что-то вроде MANAGER_ID).Из javadoc атрибута name:

(необязательно) Имя столбца внешнего ключа .Таблица, в которой он находится, зависит от контекста. Если объединение для сопоставления OneToOne или Many-ToOne, столбец внешнего ключа находится в таблице исходного объекта .Если соединение для ManyToMany, внешний ключ находится в таблице соединения.По умолчанию (применяется только в том случае, если используется один столбец соединения): конкатенация следующего: имя свойства ссылочной связи или поля ссылочной сущности;"_";имя ссылочного столбца первичного ключа.Если в сущности нет такого ссылочного свойства или поля отношения, имя столбца соединения формируется как объединение следующих элементов: имя объекта;"_";имя столбца первичного ключа, на который есть ссылка.

0 голосов
/ 21 июля 2010

вы должны указать имя столбца, который вы хотите присоединить к вашей User сущности.Имя может быть любым, каким вы захотите, так, как оно будет отображаться в вашей базе данных."manager_id" или что угодно.

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