2014-03-14 75 views
1

我們有一個遺留表,我們不希望它通過添加鑑別器列來更改。 是否有沒有鑑別器列的tablePerHierarchy。休眠狀態下沒有鑑別器列的tablePerHierarchy策略

下面是我的父母和子女類代碼

@Entity 

@Table(name = 「SHAPE1」) @Inheritance(策略= InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(NAME = 「鑑別」,discriminatorType = DiscriminatorType.STRING) @DiscriminatorValue(值= 「S」)

公共類Shape {

@Id 
@Column(name = "Shape_Id") 
int shapeId; 
@Column(name = "Shape_Name") 
String shapeName; 

public Shape() { 

} 

public Shape(int id, String shapeName) { 
    this.shapeId = id; 
    this.shapeName = shapeName; 
} 
// getters and setters 

}

下面是我的子類

@Entity 

@DiscriminatorValue(值= 「R」) 公共類矩形延伸的部分{

@Column(name = "Rectangle_Length") 
int length; 
@Column(name = "Rectangle_Breadth") 
int breadth; 

// getters and setters 

public Rectangle() { 

} 

public Rectangle(int id, String shapeName, int length, int breadth) { 
    super(id, shapeName); 
    this.length = length; 
    this.breadth = breadth; 
} 

// getters and setters 

}

你可以看到我上面的示例我不得不使用鑑別​​器。 如果有誰知道有沒有tablePerHierarchy鑑別列請幫我

回答

0

SINGLE_TABLE是一個非常強大的策略,但有時,特別對遺留系統,你不能添加額外的鑑別列。爲此,Hibernate引入了鑑別器公式的概念:@DiscriminatorFormula是@DiscriminatorColumn的替代品,並使用SQL片段作爲鑑別器解析的公式(不需要專用列)。

@Entity @DiscriminatorFormula( 「情況下forest_type爲null,則0,否則,forest_type結束」) 公共類森林{...}