如何使用两个唯一约束

时间:2015-09-15 02:53:41

标签: java mysql jpa eclipselink

我有一个基于Eclipselink / MySQL构建的应用程序。每个持久对象都被赋予一个唯一的密钥,该密钥作为一个序列生成(在数据库中是唯一的 - 而不仅仅是相应的表)。我们现在需要添加第二个连续的唯一键。该密钥是参考存储在配置表中的序列变量生成的。也就是说,读取变量,添加1,用作键和更新变量。

问题是这个过程间歇性地失败了。在这个阶段,我们不确定为什么(但正在调查)所以我的问题是:是否有任何理论上的理由在一个对象(表)上有两个唯一的键?有这样做的首选机制吗?

1 个答案:

答案 0 :(得分:1)

如何为此实体实现@PrePersist回调。它可以做'索引表'选择/更新并在实体中设置适当的值。 正如克里斯已经提到的,模型本身并不支持多个顺序。

另一种选择是在单个事务中的某个DAO方法中手动执行 - 从表中检索值,设置它(使用常规setter),持久化实体和提交/回滚,具体取决于结果。