Я использовал иерархию таблиц для каждого класса в hibernate, как указано ниже здесь .
У меня есть простая одноуровневая иерархия, где родительский элемент включает в себя несколько атрибутов иребенок (дети) включают больше того же самого.Есть также отношения к объекту.Например:
@Table(uniqueConstraints = { @UniqueConstraint(columnNames = {"name"}) })
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING, length = 1)
abstract class X {
...
Long id;
String name;
List<A> a;
...
}
class Y extends X {
...
String getType() { return "Y"; }
...
}
class Z extends X {
...
String getType() { return "Z"; }
...
}
class A {}
Мне нужно «обновить» постоянный экземпляр Y до экземпляра Z, сохраняющего целостность.Если я выпущу, удалите Y;создать Z, я получаю уникальные нарушения ограничений (из-за упорядочения удалений в hibernate для последующего создания / обновления), но не нашел стратегии для "обновления" Y до Z.