一尘不染

如何使用Hibernate获取两个字段的唯一密钥?

hibernate

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


阅读 181

收藏
2020-06-20

共1个答案

一尘不染

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

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

这将由数据库在更新时强制执行或保留。

如果要使用Hibernate Validator强制执行此操作,则需要编写自己的自定义验证程序。

2020-06-20