стратегия tablePerHierarchy без столбца дискриминатора в Hibernate

1

У нас есть таблица устаревших, и мы не хотим, чтобы она менялась, добавив столбец дискриминатора. Возможно ли иметь tablePerHierarchy без столбца дискриминатора.

Ниже приведен код родительского и дочернего классов.

@Entity

@Table (name = "SHAPE1") @Inheritance (стратегия = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn (name = "Discriminator", дискриминаторType = DiscriminatorType.STRING) @DiscriminatorValue (value = "S")

public class 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 (value = "R") public class Rectangle расширяет форму {

@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 без столбца дискриминатора

Теги:
hibernate

1 ответ

0
Лучший ответ

SINGLE_TABLE - очень мощная стратегия, но иногда, особенно для устаревших систем, вы не можете добавить дополнительный столбец дискриминатора. С этой целью Hibernate ввел понятие формулы дискриминатора: @DiscriminatorFormula является заменой @DiscriminatorColumn и использует фрагмент SQL в качестве формулы для разрешения дискриминатора (нет необходимости иметь выделенный столбец).

@Entity @DiscriminatorFormula ("случай, когда forest_type имеет значение null, тогда 0 else forest_type end") public class Forest {...}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню