Иерархия гибернации: NULL не допускается для столбца дискриминатора
У меня есть иерархия объектов, основанная на стратегии гибернации SINGLE_TABLE
и я поставил ddl-auto=update
в моем приложении.
Когда я запускаю тесты, используя h2db, я получаю "NULL не разрешено для столбца".
Это мое отображение:
==================
Shape
|--> Square
|--> Cube
==================
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "IS_SOLID", discriminatorType = DiscriminatorType.INTEGER)
@DiscriminatorValue(value = "-1")
public abstract class Shape{
...
}
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorValue(value = "null")
public class Square extends Shape{
...
}
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorValue(value = "1")
public class Cube extends Shape{
...
}
Мне нужно установить NULL как criminatorValue для одного подкласса.
когда ddl-auto=update
Директива создает таблицу форм, она устанавливает not null
столбец дискриминатора, поэтому я получаю "NULL не допускается для столбца".
Есть ли способ заставить столбец дискриминатора обнуляться с помощью ddl-auto?
1 ответ
Вы можете указать это, используя свойство columnDefinition @DiscriminatorColumn
@DiscriminatorColumn(name = "IS_SOLID", discriminatorType =
DiscriminatorType.INTEGER, columnDefinition = "INT(1) NULL")