Иерархия гибернации: 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")
Другие вопросы по тегам