首页 > 解决方案 > 如果违反了 2 列的唯一约束,则休眠更新

问题描述

我有一个问题,我找不到任何答案。

我有一个有 3 个成员的实体

@ManyToOne(optional = false)
@JoinColumn(name = "col1")
private Class1 class1;

@Column(nullable = false)
private Integer lvl;

@ManyToOne(optional = false)
@JoinColumn(name = "col2")
private Class2 class2;

对于这个实体,我想使用一个唯一约束来确保这两个外键的组合只能出现一次。所以我补充说:

@Table(uniqueConstraints = {
    @UniqueConstraint(columnNames = {"col1", "col2"})
})

在类定义之上。

当违反唯一约束时,如何告诉休眠使用新的 lvl 更新旧条目,如果没有则创建新行?因为目前如果我调用 saveOrUpdate() 只会引发异常?

先谢谢了

标签: hibernate

解决方案


推荐阅读