2016-11-17 5 views
1

私はかなり正直です。弁別器ではありませんが、単一のテーブルではありません

私は3つのテーブルを持っています。 2つは最後のサブクラスです。 そのために、サブクラスには識別子を使用したいが、単一のテーブルには使用しない。

例:

 
abstract class  concrete class concrete_class 
table_one   table_two  table_three 
    id     info    info 
    info_For both   info    info 
    type (table_two or table_three) 

私は、ドキュメント内の任意の情報を見つけることができませんでした。 (たぶん理解されていない)の助けを

おかげで、

Gegko

答えて

0

あなたはこのような何かを行うことができます。

主抽象クラスを作成EntityA、私は継承による継承を定義しました。すべてのテーブルは同じPKを共有します。

また、列がディスクリミネータタイプと列データの種類として機能することを定義します。あなたは識別カラムの実際の値を定義し、そのEntityBまたはEntityC場合、構築するために必要なオブジェクトかを知る冬眠する必要があり、各サブクラスで

。ここでは、すべての

@Entity 
@Table(name = "table_one") 
@Inheritance(strategy = InheritanceType.JOINED) 
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING) 
public abstract class EntityA { 


@Entity 
@Table(name = "table_two") 
@DiscriminatorValue(value = "B") 
public class EntityB extends EntityA { 
... 
} 

@Entity 
@Table(name = "table_three") 
@DiscriminatorValue(value = "C") 
public class EntityC extends EntityA { 
... 
} 

公式ドキュメントhttp://docs.jboss.org/hibernate/orm/3.5/reference/en/html/inheritance.html#inheritance-tablepersubclass-discriminator

+0

おかげだ

は、私はあなたのソリューションをテストします:) 不便をおかけして申し訳ありません...非常に簡単ご覧ください。 – Gegko

+0

@Gegko素晴らしい、それが正しく動作させることができるかどうか教えてください。 – cralfaro

+0

@Gegko some lights ?? – cralfaro