我有一个包含三个字段的表,比如 a、b、c。我想添加一个约束,确保如果 a 不为空,则 b 和 c 也不为空。我已经使用以下 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
是可能的:
@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 评论重写了您的条件。)。 @Check
注解的constraints
子句需要引用@Column
的name
属性(必须是纯SQL)。
@Check
注释需要在类级别,因为 Hibernate bug .
关于java - Hibernate 检查注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31983454/