我有一个实体类的两个字段,我不希望它们是唯一的,而是用作本身必须是唯一的键的复合字段。例如,我有两个字段(名称和版本),这些字段对于其他记录可以相同,但它们必须唯一。使用Hibernate(带有注释)做到这一点的最佳方法是什么?我正在将Hibernate Validator用于其他字段,但不确定如何使用该方法来验证两个字段一起组成唯一键。我正在使用具有id泛型类型的泛型实体类,可以将其替换为复合键类,但是我还没有使它很好地工作。
这将在数据库上创建一个唯一键:
@Table( name = "MYTABLE", uniqueConstraints = { @UniqueConstraint( columnNames = { "NAME", "VERSION" } ) } )
这将由数据库在更新时强制执行或保留。
如果要使用Hibernate Validator强制执行此操作,则需要编写自己的自定义验证程序。