我认为JDO中的常见情况。我有一个简单的持久化类,比如说
@PersistenceCapable
public class Person {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.INCREMENT)
private long id;
@Persistent
@Unique
private String name
//constructor, equals, hashcode, etc...
}
然后我想做一个简单的添加,但如果因为违反了唯一约束而导致添加失败,则抛出自定义异常
public void addPerson(String name) throws NotUniqueException {
PersistenceManager pm = getPM();
Transaction tx = pm.currentTransaction();
try {
tx.begin();
Person toAdd = new Person(name);
pm.makePersistent(toAdd);
// how do I throw a NotUniqueException if the transaction fails due to
// "name" not being unique?
tx.commit();
} finally {
if (tx.isActive()) {
tx.rollback();
}
pm.close();
}
}
如何在JDO中检测到此错误情况?我很好,必须首先查询是否会成功,只要检查和添加操作是原子的。我只是JDO事务的新手,如果我进行查询并检查事务,我不确定我得到什么保证。
根据this answer,对于JPA,我必须挖掘特定于供应商的原因异常的异常链并使用该信息。 JDO是真的吗?
答案 0 :(得分:0)
JDODataStoreException,具有嵌套的数据存储区特定异常,根据JDO规范