Problème avec le PersistenceManager et la transaction durant la création d'un objet.
Bonjour,
Voici mon problème. J'ai un objet capteur pour lequel je crée des liens avec deux autres tables: système et famille de capteurs.
La création de lien avec la table système par la création d'un systemSensorLink se passe à merveille avec le code suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public void create() {
PersistenceManager pm = PMF.getManager();
Transaction tx = pm.currentTransaction();
try {
tx.begin();
pm.makePersistent(this);
tx.commit();
} catch(Exception e) {
} finally {
if (tx.isActive()) {
tx.rollback(); // Error occurred so rollback the PM transaction
}
}
pm.close();
} |
J'utilise ensuite le même code pour la création d'un lien entre le capteur et la famille de capteurs mais cette fois-ci, la table n'est pas mise à jour. En effet, lors du débuggage, le programme passe directement de la ligne
Code:
pm.makePersistent(this);
à la ligne
Code:
if (tx.isActive()) {
sans effectuer le . Avez-vous une idée du pourquoi de ce saut de ligne? Puis-je utiliser ce même code deux fois? Sinon, comment créer des objets dans deux tables différentes à la suite?
Merci encore pour votre réponse.
Informations complémentaires
Bonjour,
Voici quelques informatinos supplémentaires suite à mon déboggage de ce matin.
Donc, il y a bien un erreur mais comme je ne la traite pas, elle ne risque pas de s'afficher!
La Voici: "Insert of object failed ....: Field 'ID' does not have a default value."
Il Y a un problème avec l'attribution de Ids sur la méthode:
Code:
Object persistedPc = persistentObjectInternal(obj, null, null, -1, objectProvider.PC)
Si je trouve d'où cela provient, je mettrai la réponse.
Si vous soupçonnez le manque de mon code, n'hésitez pas à m'en faire part.