Отображение многоуровневого наследования в Hibernate - PullRequest
7 голосов
/ 04 ноября 2008

В настоящее время у меня есть такая структура:

A
|
+--B
|
+--C

Это сопоставлено с одной таблицей на подкласс, используя объединенные таблицы. По историческим причинам я также использую дискриминатор, поэтому текущая ситуация такая же, как описано в Раздел 9.1.3 руководства по Hibernate .

Вопрос: Как расширить отображение для такой структуры:

A
|
+--B
|  |
|  D
|
+--C

Могу ли я <subclass> a <subclass> в отображении спящего режима? Что <key> мне нужно?

Ответы [ 2 ]

6 голосов
/ 04 ноября 2008

не проверено , но, согласно ссылке, которую вы разместили, если вы используете hibernate3

<hibernate-mapping>
  <class name="A" table="A">
    <id name="id" type="long" column="a_id">
      <generator class="native"/>
    </id>
    <discriminator column="discriminator_col" type="string"/>
    <property name="" type=""/>
    <!-- ... -->
  </class>
  <subclass name="B" extends="A" discriminator-value="B">
    <!-- ... -->
  </subclass>
  <subclass name="D" extends="B" discriminator-value="D">
    <!-- ... -->
  </subclass>
  <subclass name="C" extends="A" discriminator-value="C">
    <!-- ... -->
  </subclass>
</hibernate-mapping>
0 голосов
/ 13 декабря 2017

Используя аннотации, это можно сделать следующим образом:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name="LoanType",discriminatorType="String")
@Table(name = "A")
public class A implements Serializable{
}

@Entity
@Table(name= "B")
@PrimaryKeyJoinColumn(name = "B_ID", referencedColumnName ="A_ID")
public class B extends A{
}


@Entity
@Table(name= "C")
@PrimaryKeyJoinColumn(name = "C_ID", referencedColumnName = "B_ID")
public class C extends B{}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...