2016-10-31 56 views
1

映射繼承將如何繼承我映射類在Hibernate中:Java的冬眠如何使用註釋

,比如我有抽象類圖和兩個子類正方形和圓形。我怎樣才能將它們全部映射到一張表中,例如「數字」?

我已經試過這樣的事情

@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{ 

} 

,但它不工作。

感謝所有幫助:)

回答

2

你需要做的是添加註釋的父類:

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

DiscriminatorColumn將通過休眠創建知道這個對象是什麼類型的新列。

在我來說,我創建一個名爲「類型」

一列,也註釋你的所有子類

在DiscriminatorValue你需要插入使用Hibernate的值來標識類

在我的情況下,它是字符串。 (在DiscriminatorColumn註釋discriminatorType)

@Entity 
@DiscriminatorValue(V) 

所以你的情況可能看起來像:

@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{ 

} 

您可以在這裏找到更多的信息:http://www.javatpoint.com/hibernate-table-per-hierarchy-using-annotation-tutorial-example