java - 如何使用 Hibernate 获取两个字段的唯一键?

标签 java hibernate orm jpa annotations

我有一个实体类的两个字段,我不希望它们是唯一的,而是用作本身必须唯一的键的复合字段。例如,我有两个字段(名称和版本),其他记录可以相同,但它们必须是唯一的。使用 Hibernate(带注释)的最佳方法是什么?我正在将 Hibernate Validator 用于其他字段,但我不确定使用它来验证两个字段一起构成唯一键的方法。我正在使用一个泛型实体类,它有一个 id 泛型类型,可以换成复合键类,但我还没有让它很好地工作。

最佳答案

这将在数据库上创建一个唯一键:

@Table( name = "MYTABLE",
        uniqueConstraints = { @UniqueConstraint( columnNames = { "NAME", "VERSION" } ) } )

这将由数据库在更新或持久化时强制执行。

如果您想使用 Hibernate Validator 强制执行此操作,您需要编写自己的自定义 validator 。

关于java - 如何使用 Hibernate 获取两个字段的唯一键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/946512/

相关文章:

php - Laravel 在 Eloquent ORM 中使用 WHERE

javascript - 可以在 Sequelize 中嵌套包含的 WHERE 吗?

java - java中从文件中读取int

java - 正确使用switch语句

hibernate - 什么是 hibernate 中的上下文 session ?

hibernate - 如何在多列上计算Distinct

java - 具有附加约束的 @OneToOne 关系

java - JSP 标记库使用相同的对象

java - 引用 Spring 表达式语言中的其他属性

java - hibernate 忽略 LEFT JOIN