Hi, entity group is not useful at rollback but rather limits you to which updates you can do: all the entities you touch in a single transaction must be in the same entity group.
So, designing your groups properly is a key design issue in GAE to avoid unnecessary complexity when you later need to update at once entities that you created before in various groups. regards didier On May 30, 7:57 am, Jacob <jacob.rho...@gmail.com> wrote: > I am writing some code that needs to do a rollback on a secondary > object/table should the transaction fail, I believe this can be done > via entity groups, however I am not sure if this is how it would be > implemented. I have written some sample code to check if what I would > be doing is correct? > > Would the following code ensure the "Account" object is never updated > if the insert of the "TransactionRecord" object fails. > > public void addTransaction(String account, Double value, String > description, Date date) throws EntityNotFoundException { > DatastoreService datastore = > DatastoreServiceFactory.getDatastoreService(); > > int retries = 3; > while (true) { > Transaction txn = datastore.beginTransaction(); > try { > > // Update the bank balance > Key key = KeyFactory.createKey("Account", > account); > Entity e = datastore.get(key); > Double balance = (Double) > e.getProperty("balance"); > balance += value; > e.setProperty("balance", value); > datastore.put(e); > > // Record transaction details > Entity d = new Entity("TransactionRecord", > key); > d.setProperty("account_key", key); > d.setProperty("date", date); > d.setProperty("value", value); > d.setProperty("description", description); > > txn.commit(); > break; > } catch (ConcurrentModificationException e) { > if (retries == 0) > throw e; > --retries; > } finally { > if (txn.isActive()) > txn.rollback(); > } > } > > } > > Thanks for any feedback! -- 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 google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.