我有一个包含三个字段的表,比如a,b,c。我想添加一个约束,确保如果a不为null,那么b和c也不为null。我已经使用以下SQL
完成了这项工作static $table = DBPREFIX . '_blog';
有没有办法使用hibernate注释实现相同的效果@Check?
我找不到这个注释的有用示例,开发人员根本不会使用它吗?
答案 0 :(得分:6)
是的,如果在类级别使用@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
的{{1}}属性(它必须是纯SQL)。
@Column
注释需要在类级别,因为Hibernate bug。