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

Jam*_*ams 24 java orm annotations hibernate jpa

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

mtp*_*typ 42

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

@Table( name = "MYTABLE",
        uniqueConstraints = { @UniqueConstraint( columnNames = { "NAME", "VERSION" } ) } )
Run Code Online (Sandbox Code Playgroud)

这将由数据库在更新或持久性上强制执行.

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