考虑以下实体类,以用于,例如,的EclipseLink 2.0.2 - 其中所述link
属性不是主键,但独特nontheless。捕捉违反约束在JPA 2.0
@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
- 我担心这种错误代码,虽然是数据库的本地错误代码; - 检查一个
Profile
的具有用于预先link
特定值的存在 - 这显然会导致多余的查询大量的。
我已经提交一个bug针对此问题。请为此投票,以便我们解决此问题:https://bugs.eclipse.org/bugs/show_bug.cgi?id=375745 – sdoca 2012-03-30 17:01:58