我有一个基于休眠策略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?
将鉴别器列置为可空答案 0 :(得分:0)
您可以使用@DiscriminatorColumn
的columnDefinition属性指定它@DiscriminatorColumn(name = "IS_SOLID", discriminatorType =
DiscriminatorType.INTEGER, columnDefinition = "INT(1) NULL")