我们有一个遗留表,我们不希望通过添加一个鉴别符列来对其进行更改。
是否有没有区分符列的tablePerHierarchy。

下面是我的父母和孩子的课程代码

@Entity


@Table(name =“ SHAPE1”)
@Inheritance(策略= InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name =“ Discriminator”,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”)
公共类Rectangle扩展Shape {

@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没有歧视者列,请帮助我

最佳答案

SINGLE_TABLE是一种非常强大的策略,但有时,尤其是对于旧系统,您无法添加其他区分符列。为此,Hibernate引入了区分符公式的概念:@DiscriminatorFormula替代了@DiscriminatorColumn,并使用SQL片段作为区分符解析的公式(无需专用列)。

@实体
@DiscriminatorFormula(“当forest_type为null时为0,否则,forest_type结尾的情况”)
公共课森林{...}

10-04 20:53