2010-06-03 2 views
1

Je crois que je reçois des exceptions JDO en raison de l'imbrication des transactions, mais je ne suis pas sûr.Comment détecter une transaction JDO en attente?

Est-ce que cela détectera la situation où je commence une transaction alors qu'une autre est en attente?

PersistenceManager pm = PersistenceManagerFactory.get().getPersistenceManager(); 
assert pm.currentTransaction().isActive() == false : "arrrgh"; 
pm.currentTransaction().begin(); 

Existe-t-il un moyen meilleur ou plus fiable?

+0

Je me demande si je peux utiliser javax.jdo.PersistenceManage.getManagedObjects (...) pour détecter si des objets provenant de deux domaines Big Table seront chargés en même temps? - C'est mon problème de nidification ... – Stevko

Répondre

0

avec la permission de Ikai Lan (Google)

Vous ne pouvez pas détecter si une transaction est active. La raison en est que les groupes d'entités de banque de données ne sont pas verrouillés de manière pessimiste: ils sont verrouillés de manière optimiste. C'est-à-dire que la vérification pour savoir si votre application fonctionne sur des données périmées est vérifiée au moment de l'écriture, pas au moment de la lecture des données.

Questions connexes