当前位置: 首页 > 知识库问答 >
问题:

Hibernate检查注释

牛昱
2023-03-14

我有一个包含三个字段的表,比如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有没有办法达到同样的效果?

我找不到一个有用的注释示例,开发人员倾向于根本不使用它吗?

共有2个答案

康文昌
2023-03-14

在类级别使用下一个注释检查所有三列,例如:

@选中(constraints=“COL\u A

COL_A,COL_BCOL_C要检查的列名

不要检查可为空的列@NotNull优先于@Check。

印飞捷
2023-03-14

是的,如果在类级别使用@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注释的约束子句需要引用@ColVIIIname属性(必须是纯SQL)。

@Check注释需要处于类级别,因为存在Hibernate错误。

 类似资料:
  • 我在数据库中有Consumer表,其中Consumer_type列上有check约束,如下所示: 现在,从hibernate方面,我想添加check约束注释,该注释只允许消费者类型表中的“ACCOUNT”和“ORGANIZATION”值。 为此,我应该使用哪个hibernate/jpa注释?

  • 问题内容: 我有一个包含三个字段的表,例如a,b,c。我想添加一个约束,以确保如果a不为null,那么b和c也不为null。我已经使用以下SQL做到了 有没有一种方法可以使用hibernate注释@Check达到相同的效果? 我找不到带有该注释的有用示例,开发人员是否倾向于完全不使用它? 问题答案: 是的,可以在类级别使用,例如: (请注意,我使用@jarlh注释重写了您的情况。)该条款注释需要参

  • 我有一个注释和三个类,像这样: 有没有办法确定当前注释是直接在类中继承还是声明的? 类似于方法<代码>公共布尔值的东西是默认的(类 导出输出:

  • 问题内容: 假设类型 A的 对象存储在DB中。这是我使用hibernate从数据库加载特定数据库的方式: 如果id = 1的对象不存在,我将得到 ObjectNotFoundException 。但是,有没有一种方法可以检查此类对象是否存在而不必捕获异常?我想拥有的是: 找不到hibernate文档… 问题答案: 您可以使用: 如果对象在数据库中不存在,它将返回null。您可以在Hibernate

  • 使用指南 - 代码安装 - 代码检查 - 代码检查注意事项 为全面正确统计网站流量,请在网站的所有页面上正确安装统计代码; 本功能通过抓取网站页面,分析是否安装了正确的统计代码,但有的网站打开速度较慢,或者限制程序抓取网页,会导致系统无法判断。这种情况下,请联系网站管理员了解代码的实际安装情况; 如果通过js文件调用的方式安装统计代码,由于无法直接在网站页面中找到统计代码,会提示“未检测到代码”,

  • 问题内容: 我正在使用反射来查看附加到类的属性的注释是否具有特定类型。目前我正在做: 这让我有些不高兴,因为它依赖于完全合格的类名称的字符串。如果将来更改命名空间,则可能会导致细微的错误。 我想要做: 但是是抽象类,无法实例化。有没有一种方法可以针对接口或抽象类进行模拟(或基本上使用)? 问题答案: 你只是在寻找 ?