我有一个包含三个字段的表,例如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达到相同的效果?
我找不到带有该注释的有用示例,开发人员是否倾向于完全不使用它?
是的,可以@Check在类级别使用,例如:
@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)。
constraints
name
@Column
@Check由于Hibernate错误,注释必须处于类级别。