2

我有一个基于休眠策略的实体层次结构,SINGLE_TABLEddl-auto=update在我的 application.yml 中设置。

当我使用 h2db 运行测试时,我得到“ NULL not allowed for column ”。

这是我的映射:

==================
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 not allowed for column ”。

有没有办法使用 ddl-auto 强制鉴别器列可以为空?

4

1 回答 1

0

您可以使用 @DiscriminatorColumn 的 columnDefinition 属性指定它

@DiscriminatorColumn(name = "IS_SOLID", discriminatorType = 
                     DiscriminatorType.INTEGER, columnDefinition = "INT(1) NULL")
于 2018-01-29T09:55:38.700 回答