2017-02-18 19 views
0

Спасибо, что прочитали мой вопрос. Я новичок в Hibernate, и я хочу использовать 1 объект во многих сущностях (с Annotaion). Я попытался выполнить мою проблему, но до сих пор не нашел ответа.Разделять enity среди сущностей в спящем режиме

Пример, у меня есть некоторые объекты:

Адрес (ID_Address, провинция, округ, Ward)

Дом (ID_House, Телефон, ID_Address)

сотрудников (ID_Staff , Название, ID_Address)

Гость (ID_Guest, адрес электронной почты, ID_Address)

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

Я thinked о One-к-одному, но это путь мой адрес субъект должен объявить частный дом дом или частный персонал сотрудников или Частный гостевой гость? Есть ли другой способ сделать это, или, может быть, я что-то пропустил?

+0

* таким образом мой объект адреса должен объявить частный дом дома *: нет, это неверно. Прочтите документацию: http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#associations-one-to-one –

ответ

1

В большинстве случаев вы должны думать об отношениях сущностей как «родитель-ребенок». Иногда ребенок знает о своем родителе, а иногда - нет.

Похоже, что в вашем случае Адрес не обязательно должен знать о его родительском объекте, что означает, что вам не нужно обращаться к родительскому объекту с сущностью адреса, вам просто нужно получить адрес от родительский объект, такой как Дом, Персонал или Гость.

В этом случае просто объявите связь @OneToOne от родителя к объекту адреса и не имеют ссылки на родителя из адреса. Таким образом, Hibernate будет использовать столбец в родительской таблице, который указывает на таблицу адресов, используя идентификатор адреса.

Вы также можете рассмотреть возможность использования @Embeddable и @Embedded. Вкладыши - это просто «объекты ценности», и они не считаются объектами. Вкладыши могут храниться в той же таблице, что и «родительский объект», или они могут храниться в их собственной таблице.

Надеюсь, это поможет.

+0

Большое спасибо: D – NPT0612