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]. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
