ここで説明するよう、あなたはJPA継承を使用することができます。休止状態で
https://en.wikibooks.org/wiki/Java_Persistence/Inheritance#Example_joined_inheritance_annotations
を次のようにあなたは、このような関係をモデル化することができます。ユーザーを照会するとき、Hibernateを使って正しいタイプのインスタンスを返すことができます。
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class User{
@Id
private Long userId;
}
@Entity
public class InternalUser extends User{
}
@Entity
public class ExternalUser extends User{
}
に連結された記事で述べたように、Hibernateは接合された継承を使用するときに指定する識別子列を必要としません。しかし、それが利用可能な場合、弁別子列をサポートします。あなたのスキーマuserTypeを利用できるようにしたい場合は、望むなら明示的に指定することができます。私は、これは生成されたSQLの面でいくつかのパフォーマンス上の利点をもたらすであろうと想像:
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name="userType")
public class User{
@Id
private Long userId;
}
@Entity
@DiscriminatorValue("INT")
public class InternalUser extends User{
}
@Entity
@DiscriminatorValue("EXT")
public class ExternalUser extends User{
}
:オプションの識別カラムと
マッピング