Гибернация — правильное сопоставление «один к одному»

#java #hibernate

#java #спящий режим

Вопрос:

Как я должен сопоставить однозначную связь между классами A и B в случае A.id != B.id (как предлагает hibernate для однозначной ассоциации), и я хочу иметь ассоциацию, подобную A.b_id = B.id вместо этого? Должно ли оно быть сопоставлено как много-к-одному (для) ассоциации? Двунаправленность не требуется.

Ответ №1:

Вам просто нужно указать имя столбца объединения в дополнение к OneToOne, и hibernate присоединится ко всему, что вы хотите.

 @OneToOne
@JoinColumn(name="B_ID", referencedColumnName="ID")
private B b;
  

Обычный способ сопоставить его в XML — это уникальный формат «много к одному».

 <many-to-one name="b" 
    column="b_id" 
    unique="true"/>
  

Комментарии:

1. хммм. как это выглядит в hbm.xml ?

2. afaik, есть атрибут column = «b_id», который вы можете добавить к «один к одному», но я не очень хорошо разбираюсь в гибернации на основе xml.

3. @Andrey : docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/… Справочное руководство по гибернации — лучшее место для поиска справочной информации о гибернации.