3

@transactional アノテーションを使用してロールバックを実装する必要がありますが、期待どおりに機能しません。適切なロールバックを行うには他に何が必要ですか?? コードが実行されたときに db の結果が "testingOne" になるようにしたいのですが、現在は "notRollBacked" に設定されています。私の間違いを指摘してください。

 public Response deleteUser(Request argVO)throws Exception
{
    Users users = UsersLocalServiceUtil.getUsers("sagar");
    users.setUserName("testingOne");
    UsersLocalServiceUtil.updateUsers(users);
    try
    {
        testRollbackFunction();
    }
    catch (Exception ex)
    {

    }
    return new Response();
}


@Transactional(isolation = Isolation.PORTAL, rollbackFor =
    {PortalException.class, SystemException.class})
private void testRollbackFunction() throws Exception
{
    Users users = UsersLocalServiceUtil.getUsers("sagar");
    users.setUserName("notRollbacked");
    UsersLocalServiceUtil.updateUsers(users);
    throw new PortalException();
}

** * ** * ** * ** * ** * * Edit 1 * ** * ** * ** * *** 回答に記載されていることを行いました:

私は文脈から豆を取った

クラス/ Beanを次のように記述しました

  @Transactional(isolation = Isolation.PORTAL, rollbackFor =
{PortalException.class, SystemException.class})
public class RollBack
{

@Transactional(isolation = Isolation.PORTAL, rollbackFor =
    {PortalException.class, SystemException.class})
public void thisWillRollBack() throws Exception
{
    Users users = UsersLocalServiceUtil.getUsers("sagar");
    users.setBarringReason("notRollbacked");
    UsersLocalServiceUtil.updateUsers(users);
    throw new PortalException();
}

}

spring xml ファイルの bean refrence を次のように設定:

<bean id="rollBackBean" class="com.alepo.RollBack">

</bean>

public Response myMethod(Request argVO)throws Exception
{
    Users users = UsersLocalServiceUtil.getUsers("sagar");
    users.setBarringReason("testingOne");
    UsersLocalServiceUtil.updateUsers(users);
    try
    {
        Test test = new Test();
        Object obj = test.getBean();
        RollBack rollBack = (RollBack)obj;
        rollBack.thisWillRollBack();
    }
    catch (Exception ex)
    {
        ex.printStackTrace();
    }
    return new Response();
}
################編集 4

ロールバック関数を次のように呼び出すようになりました:

 RollBack rollBack =     (RollBack)PortalBeanLocatorUtil.getBeanLocator().locate("rollBackBean");

        rollBack.thisWillRollBack();

現在、写真にテストクラスはありません...どこにも新しいものはありません...

まだ動作していません .......

4

2 に答える 2