这是我的代码:
@Override
public void updateUser(String instance, String storeName, final String userId,
final String newUsername, final String newPassword) {
if (storeName == null || storeName == null) {
return;
}
final PersistentEntityStore entityStore = PersistentEntityStores.newInstance(xodusRoot + instance);
entityStore.executeInTransaction(new StoreTransactionalExecutable() {
@Override
public void execute(@NotNull final StoreTransaction txn) {
EntityId roleEntityId = txn.toEntityId(userId);
final Entity entity = txn.getEntity(roleEntityId);
if(newUsername != null) {
entity.setProperty("username", newUsername);
}
if(newPassword != null) {
entity.setProperty("password", newPassword);
}
//txn.commit();
}
});
entityStore.close();
}
我想知道是否需要此代码txn.commit();
,以便要执行的事务,回滚如何?
ps。
如果所有事务都成功完成,我希望这段代码返回布尔值,但是除了txn.commit
以外,找不到返回布尔值的方式,是这样吗?所以必须要吗?
答案 0 :(得分:1)
如果使用executeInTranction()
或computeInTransaction()
之类的方法,则不应调用txn.commit()
。只需使用executeInTranction()
方法来确保事务已提交-如果您的程序在executeInTranction之后到达下一条语句,则该事务已提交。