hibernate层次结构:鉴别器列不允许NULL

时间:2018-01-29 09:18:10

标签: hibernate spring-boot h2db

我有一个基于休眠策略SINGLE_TABLE的实体层次结构,我在application.yml中设置了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 设置为一个子类的discriminatorValue。

ddl-auto=update指令创建形状表时,它设置为not null鉴别器列,因此我得到“ NULL不允许列”。

有没有办法强制使用ddl-auto?

将鉴别器列置为可空

1 个答案:

答案 0 :(得分:0)

您可以使用@DiscriminatorColumn

的columnDefinition属性指定它
@DiscriminatorColumn(name = "IS_SOLID", discriminatorType = 
                     DiscriminatorType.INTEGER, columnDefinition = "INT(1) NULL")