Как мне сопоставить объекты в общую таблицу с Hibernate? - PullRequest
0 голосов
/ 08 сентября 2010

У меня есть несколько простых объектов, которые хранятся в простой «кодовой» таблице со следующей структурой (все хранятся в виде символьных полей):

code_fieldname   pk
code_value       pk
code_comment
code_field1
code_field2

Один объект, который я пытаюсь отобразить, имеет данные, хранящиеся в этой таблице следующей формы

code_fieldname = "segment"
class = Segment
segment.id = code_value
segment.name = code_comment
segment.markup = code_field1 (decimal property)

Таким образом, все записи сегмента имеют "code_fieldname" = "сегмент", а их ID является значением "code_value".

Что такое отображение для такой структуры? Я использую отображение на основе XML.

1 Ответ

0 голосов
/ 08 сентября 2010

Мне удалось решить эту проблему сначала с помощью наследования класса, а затем с помощью свойства формулы в отношении. Определение для сущностей следующее:

<class name="GeneralCode" table="code_mstr">
  <composite-id name="key">
    <key-property name="key" column="code_fieldName" type="string"/>
    <key-property name="value" column="code_value" type="string"/>
  </composite-id>
  <discriminator column="code_fieldName" type="string" insert="false"/>
  <subclass name="Segment" discriminator-value="segment">
    <property name="name" type="string" column="code_comment"/>
  </subclass>
</class>

Теперь я могу использовать это в следующих отношениях:

<many-to-one name="segment" class="Segment"
             lazy="false" insert="false" update="false">
  <formula>'segment'</formula>
  <column name="segment"/>
</many-to-one>

Обратите внимание, что для формулы требуется значение «сегмента» в кавычках, поскольку это всегда ключ поля, то есть во всех случаях code_fieldname = «сегмент».

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