【发布时间】:2023-03-30 21:06:01
【问题描述】:
考虑以下实体类,例如与 EclipseLink 2.0.2 一起使用 - 其中link 属性不是主键,但它是唯一的。
@Entity
public class Profile {
@Id
private Long id;
@Column(unique = true)
private String link;
// Some more attributes and getter and setter methods
}
当我为 link 属性插入具有重复值的记录时,EclipseLink 不会抛出 EntityExistsException,而是抛出 DatabaseException,并显示消息说明违反了唯一约束。
这似乎不是很有用,因为没有一种简单的、独立于数据库的方法来捕获这个异常。处理此问题的建议方法是什么?
我考虑过的几件事是:
- 检查
DatabaseException上的错误代码 - 不过,我担心这个错误代码是数据库的本机错误代码; - 事先使用
link的特定值检查Profile的存在 - 这显然会导致大量多余的查询。
【问题讨论】:
-
我已经为此问题提交了一个错误。请为它投票,以便我们解决此问题:bugs.eclipse.org/bugs/show_bug.cgi?id=375745
标签: java jpa try-catch eclipselink unique-constraint