Hibernate <set>ключ от объединенной таблицы - PullRequest
0 голосов
/ 17 сентября 2010

Интересно, можно ли определить Set в отображении Hibernate таким образом, чтобы этот элемент указывал не столбец в исходной ( FOO ) таблице, а в объединенной ( BAR *) 1005 *). Допустим, у нас есть некоторый FooContainer.hbm.xml, который содержит Set из Foo объектов:

<set ...>
  <key column="COLUMN_FROM_BAR" />
  <one-to-many class="xyz.Foo" />
</set>

Здесь FOO имеет от FK до BAR ( FOO.BAR_ID ), поэтому соединение осуществляется через элемент в Foo.hbm.xml:

<many-to-one class="xyz.Bar" fetch="join" column="BAR_ID" foreign-key="barId" ... />

, в результате чего FOO-BAR выбирается при каждом выборе xyz.Foo.

Проблема в том, что при сгенерированном условии Set выборка select выглядит примерно так:

... WHERE _FOO_0.COLUMN_FROM_BAR = ?

при желании:

... WHERE _BAR_0.COLUMN_FROM_BAR = ?

1 Ответ

1 голос
/ 20 сентября 2010

Нашел ответ в Сохранение Java с помощью Hibernate (стр. 296).Хитрость заключается в том, чтобы установить другую таблицу настроек ( BAR ) из целевого класса (Foo):

  <set table="BAR" ...>
    <key column="COLUMN_FROM_BAR" /> 
    <many-to-many
      class="xyz.Foo"
      column="BAR_ID"
      unique="true"
      />
  </set>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...