2016-10-31 9 views
1

を使用して継承をマップする方法休止状態どのように私は、Hibernateで継承クラスをマッピングすることができますアノテーション

たとえば、私は抽象クラス図と2つのつの子クラス広場やサークルを持っています。どのようにすれば、それらをすべて1つのテーブルにマップすることができますか?たとえば、「数字」ですか?

私はこの

@Entity 
@Table(name = "figures") 
public abstract Figure{ 
} 

@Entity 
@Table(name = "figures") 
public class Square extends Figure{ 

} 

@Entity 
@Table(name = "figures") 
public class Circle extends Figure{ 

} 

のようなものを試してみましたが、それは仕事をdoesntの。

あなたがする必要がどのような任意の助け:)

答えて

2

のおかげでは、親クラスに注釈を追加することです:

@Entity 
@Inheritance(strategy=InheritanceType.SINGLE_TABLE) 
@DiscriminatorColumn(name="type", discriminatorType=DiscriminatorType.STRING) 
@Table(name = "figures") 

DiscriminatorColumnは、このオブジェクトが何であるかのタイプを知るために休止状態で作成された新しい列になります。あなたは

そのクラスを識別するために使用を休止値を挿入する必要がDiscriminatorValueで私の場合は

私は名前の列を作成し、「タイプ」

そしてまた、すべてのあなたの子供のクラスに注釈

私の場合はStringです。それはそのようになりますあなたのケースで(DiscriminatorColumn注釈でdiscriminatorType)ので

@Entity 
@DiscriminatorValue(V) 

http://www.javatpoint.com/hibernate-table-per-hierarchy-using-annotation-tutorial-example

:あなたがここでより多くの情報を見つけることができます

@Entity 
@Inheritance(strategy=InheritanceType.SINGLE_TABLE) 
@DiscriminatorColumn(name="type", discriminatorType=DiscriminatorType.STRING) 
@Table(name = "figures") 
public class Figure{ 

} 

@Entity 
@DiscriminatorValue("S") 
public class Square extends Figure{ 

} 

@Entity 
@DiscriminatorValue("C") 
public class Circle extends Figure{ 

} 

関連する問題