gpt4 book ai didi

java - JDO 处理唯一约束冲突

转载 作者:行者123 更新时间:2023-11-29 09:17:48 25 4
gpt4 key购买 nike

我有一个我认为是 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 事务的新手,不确定如果我进行查询和 checkin 事务会得到什么保证。

根据 this answer ,对于 JPA,我将不得不挖掘供应商特定原因异常的异常链并使用该信息。 JDO 也是这样吗?

最佳答案

根据 JDO 规范,JDODataStoreException 带有嵌套的数据存储特定异常

关于java - JDO 处理唯一约束冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8388373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com