这是我的代码:

@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会返回布尔值之外,找不到其他方法,是这样吗?所以必须要吗?

最佳答案

如果使用executeInTranction()computeInTransaction()之类的方法,则不应调用txn.commit()。只需使用executeInTranction()方法来确保事务已提交-如果您的程序在executeInTranction之后到达了下一条语句,则事务已提交。

10-02 00:43