小编典典

休眠检查注解

hibernate

我有一个包含三个字段的表,例如a,b,c。我想添加一个约束,以确保如果a不为null,那么b和c也不为null。我已经使用以下SQL做到了

ALTER TABLE sample 
ADD CONSTRAINT no_nulls
CHECK (CASE WHEN a IS NOT NULL THEN b IS NOT NULL AND c IS NOT NULL END)

有没有一种方法可以使用hibernate注释@Check达到相同的效果?

我找不到带有该注释的有用示例,开发人员是否倾向于完全不使用它?


阅读 272

收藏
2020-06-20

共1个答案

小编典典

是的,可以@Check在类级别使用,例如:

@Entity
@Check(constraints = "COL_A IS NULL OR (COL_B IS NOT NULL and COL_C IS NOT NULL)")
public class Sample {

    @Column(name = "COL_A")
    private Long a;

    @Column(name = "COL_B")
    private Long b;

    @Column(name = "COL_C")
    private Long c;

}

(请注意,我使用@jarlh注释重写了您的情况。)该constraints条款@Check注释需要参考name的属性@Column(必须是纯SQL)。

@Check由于Hibernate错误,注释必须处于类级别。

2020-06-20