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

在Hibernate中检查允许值的约束注释

狄宾实
2023-03-14

我在数据库中有Consumer表,其中Consumer_type列上有check约束,如下所示:

ALTER TABLE consumer
    ADD CONSTRAINT Check_consumer_consumer_type CHECK (consumer_type IN ('ACCOUNT','ORGANIZATION'))

现在,从hibernate方面,我想添加check约束注释,该注释只允许消费者类型表中的“ACCOUNT”和“ORGANIZATION”值。

为此,我应该使用哪个hibernate/jpa注释?

共有1个答案

融焕
2023-03-14

假设您的实体中有使用String表示的使用者类型,您可以轻松地将其替换为枚举,Java的类型安全性将确保您无法向其传递任何其他内容。

使用EnumType。STRING,值将作为字符串存储在数据库中(并在加载实体时映射回enum),因此不需要更改数据。

@Entity
public class Consumer {

    public static enum ConsumerType {
        ACCOUNT, ORGANIZATION
    }

    @Enumerated(EnumType.STRING)
    @Column(name="consumer_type", nullable=false)
    private ConsumerType consumerType;

    // Other properties, getters/setters, ...
}
 类似资料:
  • 问题内容: 给定一个PostgreSQL表,该表具有一个名为的列和一个约束,如下所示: 在这种情况下,我可以提取有关此约束的信息: 但是是否有可能编写一个专门返回未决,成功,失败的查询? 能够在我的应用程序中记住此查询的结果,而不需要维护重复的副本,将是很棒的。 问题答案: 您可以查询系统目录,例如: 使用以下函数 解压缩 字符串:

  • 问题内容: 我试图添加一个 检查约束 ,但到目前为止,我只是失败了。解决这个问题的方法是什么: 讯息1046,第15级,州1,第6行 在这种情况下,不允许子查询。仅允许标量表达式。 这是代码: 问题答案: SQL Server当前不支持CHECK CONSTRAINT的子查询 。 您已经发现,尝试规避子查询限制时,涉及UDF的CHECK约束可能会出现问题。 替代性约束执行策略是 触发过程 和 嵌入

  • 问题内容: 我是第一次使用oracle,我有一个名为ExpenseReport的表,该表存储有关费用的详细信息。 我希望Null允许ApprUserNo,如果ERStatus =’PENDING’,将不胜感激,我一直在努力整理整个上午 问题答案: 您需要重新形成约束。 首先,如果您希望一个字段保留空值,而不考虑其他任何规则,则该字段必须为可空字段。 其次,创建一个约束,说ApprUserNo不能为

  • 我正在使用:Spring 4、Hibernate 4、SQL Server 2008 } 但是,当我添加数据并尝试在列codecnbv和/或zipcode中输入第二个带有NULL的记录时,我会收到一个异常,说明我违反了unique约束。 我的要求是我必须允许多个空值,并且当值不是空值时,我应该有唯一的值,即。 56000--确定 空--确定 34089--确定 空--确定 34089--不允许 3

  • 问题内容: 我有一个存储产品代码的字段。该代码是唯一的,但是某些产品根本没有代码。我无法发明代码,因为它们是提供商代码。 在MySQL中这种约束可能吗? 我是一个存储过程和触发器的菜鸟,所以如果解决方案涉及其中之一,请耐心等待。 更新:列不为空。这就是为什么我无法做到这一点。 问题答案: 是的,您可以这样做。参见MySQL参考(版本5.5)。 UNIQUE索引会创建约束,以使索引中的所有值都必须不

  • 问题内容: 我有这两张表 Table: Guards Table: Squads 该列指向表中的列,我正在尝试创建一个约束,以检查链接到作为领导者提供的保护ID的列是否为特定值(在本例中为1) 这可能吗?还是我必须使用扳机? 问题答案: 您需要添加一个约束。我将约束包装到一个函数中,因为您需要检查另一个表的值。 该函数将检查防护等级是否足够高:请确保将其设置为适当的值,或者甚至更好地从另一个表中获