5
Io uso JDO entro GAE a lotto persistono oggetti utilizzando il seguente metodo:Dove posso impostare TransactionOptions con JDO/Google App Engine?
public void makePersistent(PersistenceManager pm,
List<Regeling> makePersistent) {
Transaction tx = pm.currentTransaction();
try {
// Start the transaction
tx.begin();
// Persist to the datastore
// pm.makePersistentAll(makePersistent);
for (int i = 0; i < makePersistent.size(); i += BATCH_SIZE) {
int last = i + BATCH_SIZE;
last = last > makePersistent.size() ? makePersistent.size()
: last;
pm.makePersistentAll(makePersistent.subList(i, last));
pm.flush();
System.out.println("Made "+last+" items persistent.");
}
// Commit the transaction, flushing the object to the datastore
tx.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (tx.isActive()) {
// Error occurred so rollback the transaction
System.out.println("Rolling back transaction");
tx.rollback();
}
pm.close();
}
}
Questo rompe:
javax.jdo.JDOUserException: One or more instances could not be made persistent
at org.datanucleus.api.jdo.JDOPersistenceManager.makePersistentAll(JDOPersistenceManager.java:791)
...
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
NestedThrowablesStackTrace:
java.lang.IllegalArgumentException: cross-group transaction need to be explicitly specified, see TransactionOptions.Builder.withXGfound both
Element {
type: "PersistentServiceResultaat$RegelingInfoLijst$Regeling"
name: "BWBR0001821"
}
and
Element {
type: "PersistentServiceResultaat$RegelingInfoLijst$Regeling"
name: "BWBR0001822"
}
così cerco di impostare le seguenti opzioni:
TransactionOptions ops = TransactionOptions.Builder.withXG(true);
ma io non riesce a trovare un metodo che accetta un oggetto TransactionOptions
. Dove posso impostare queste opzioni?
cura di spiegare perché qualcuno downvoted? – Maarten