不能rollback,但可以roll forward。
这篇可能对你有帮助:
http://www.keakon.net/article/1843

----------
keakon

My blog(Chinese): www.keakon.net
Blog source code: https://bitbucket.org/keakon/doodle/



2010/12/16 EtuO <[email protected]>

> 谢谢大家,只能开启两个事务来解决啦。
>
> 在 2010年12月16日 下午6:11,kartik kudada <[email protected]>写道:
>
> If following operation throws an exception,we can not rollback the first
>> transaction, because it is already committed. What I can think of right now
>> is, you can manually delete it. but it is not the genuine solution.
>>
>> Why don't you create owned relation between these two table?
>> Tell me about your thoughts?
>>
>> Regards,
>> Kartik
>>
>> 2010/12/16 Liang Ding <[email protected]>
>>
>> Hi, kartik.
>>> It works, but how can I rollback the 'first transaction' if the following
>>> operations throws an exception?
>>>
>>> 2010/12/16 kartik kudada <[email protected]>
>>>
>>>> You can not operate on two entities in single transaction unless both
>>>> are entity groups.
>>>> First delete CityNum  in one transaction and then delete ScheduleProcess
>>>>  in different transaction,
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> 2010/12/16 EtuO <[email protected]>
>>>>
>>>>> Caused by: java.lang.IllegalArgumentException: can't operate on
>>>>>
>>>>> multiple entity groups in a single transaction. found both Element {
>>>>>  type: "CityNum"
>>>>>  name: "013001"
>>>>> }
>>>>>  and Element {
>>>>>  type: "ScheduleProcess"
>>>>>  name: "013001"
>>>>> }
>>>>>
>>>>>        at
>>>>>
>>>>> com.google.appengine.api.datastore.DatastoreApiHelper.translateError(DatastoreApiHelper.java:
>>>>> 36)
>>>>>        at com.google.appengine.api.datastore.DatastoreApiHelper
>>>>> $1.convertException(DatastoreApiHelper.java:98)
>>>>>        at
>>>>> com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:
>>>>> 69)
>>>>>        at com.google.appengine.api.datastore.FutureHelper
>>>>> $CumulativeAggregateFuture.get(FutureHelper.java:136)
>>>>>        at com.google.appengine.api.datastore.FutureHelper
>>>>> $TxnAwareFuture.get(FutureHelper.java:213)
>>>>>        at
>>>>> com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:
>>>>> 67)
>>>>>        at
>>>>>
>>>>> com.google.appengine.api.datastore.FutureHelper.getInternal(FutureHelper.java:
>>>>> 71)
>>>>>        at
>>>>>
>>>>> com.google.appengine.api.datastore.FutureHelper.quietGet(FutureHelper.java:
>>>>> 58)
>>>>>        at
>>>>>
>>>>> com.google.appengine.api.datastore.DatastoreServiceImpl.get(DatastoreServiceImpl.java:
>>>>> 55)
>>>>>        at
>>>>>
>>>>> org.datanucleus.store.appengine.RuntimeExceptionWrappingDatastoreService.get(RuntimeExceptionWrappingDatastoreService.java:
>>>>> 64)
>>>>>        ... 86 more
>>>>>
>>>>> 实现类代码:
>>>>> /**
>>>>>     * @see
>>>>>
>>>>> org.ertuo.taoplugin.facade.TransactionOperation#nestTrans(java.lang.Object[])
>>>>>     */
>>>>>    public void nestTrans(Object... objects) {
>>>>>        String id = (String) objects[0];
>>>>>        CityNum cn = cityNumDao.get(id);
>>>>>        ScheduleProcess sp = scheduleDao.get(id);
>>>>>        cityNumDao.delete(cn);
>>>>>        scheduleDao.delete(sp);
>>>>>        logger.info("id[" + id + "]对应的城市和任务删除完毕");
>>>>>    }
>>>>>
>>>>> 接口代码:
>>>>> /**
>>>>>  * 事务性操作接口
>>>>>  * @author mo.duanm
>>>>>  * @version $Id: TransactionOperation.java, v 0.1 2010-12-16 下午
>>>>> 05:22:23 mo.duanm Exp $
>>>>>  */
>>>>> public interface TransactionOperation {
>>>>>
>>>>>    /**
>>>>>     * 嵌套事务
>>>>>     * @param objects
>>>>>     */
>>>>>    @Transactional
>>>>>    public void nestTrans(Object... objects);
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "Google App Engine for Java" group.
>>>>> To post to this group, send email to
>>>>> [email protected].
>>>>> To unsubscribe from this group, send email to
>>>>> [email protected]<google-appengine-java%[email protected]>
>>>>> .
>>>>> For more options, visit this group at
>>>>> http://groups.google.com/group/google-appengine-java?hl=en.
>>>>>
>>>>>
>>>>  --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Google App Engine for Java" group.
>>>> To post to this group, send email to
>>>> [email protected].
>>>> To unsubscribe from this group, send email to
>>>> [email protected]<google-appengine-java%[email protected]>
>>>> .
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/google-appengine-java?hl=en.
>>>>
>>>
>>>
>>>
>>> --
>>> My Blog: http://blog.csdn.net/DL88250
>>> --------------------------------------------------------
>>> Open Source, Open Mind, Open Sight, Open Future!
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Google App Engine for Java" group.
>>> To post to this group, send email to
>>> [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected]<google-appengine-java%[email protected]>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/google-appengine-java?hl=en.
>>>
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Google App Engine for Java" group.
>> To post to this group, send email to
>> [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<google-appengine-java%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/google-appengine-java?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine for Java" group.
> To post to this group, send email to
> [email protected].
> To unsubscribe from this group, send email to
> [email protected]<google-appengine-java%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to