Hallo Leute
Ich hab mal wieder ein Problem, diesmal mit Hibernate.
Ich versuche das mal so genau zu schildern wie möglich um allen möglichen Frage vorzubeugen.
Erstmal der Code abschnitt in dem das Problem auftritt:
Das Problem liegt beim Delete, das Objekt wird einfach nicht gelöscht.
Aufgrund der Programmarchitektur ist es mir nicht möglich Sessions lange aufzuhalten, so werden die Objekte detached. Sprich in einer früheren Session wird das Objekt "AccountData" geladen (Bestandteil von der Klasse "Account", siehe lAccount.getData()). AccountData sowie CharacterData sind Annotierte Klassen und der Configuration bekannt. AccountData hat eine OneToMany Beziehung zu CharacterData und andersrum eine ManyToOne Beziehung, also Bidirektional. Die OneToMany Beziehung spiegelt dabei die ManyToOne Beziehung (inverse). Der FetchType beider beziehungen ist EAGER.
Meiner Meinung nach muss ich in der neuen Session die alten Datenobjekte wieder attachen, was ich laut hibernate.org und diversen Büchern mit "update(), saveOrUpdate() oder merge()" machen kann. Allerdings funktioniert das löschen bei allen 3 alternativen nicht.
In der Log taucht keine Warn oder Error meldung auf, leider.
Ich hab scheinbar irgendwo den Blick dafür momentan verloren oder weiß einfach noch nicht woran es liegen kann.
Vielleicht könnt ihr mir dabei helfen? ^.^
Ich hab mal wieder ein Problem, diesmal mit Hibernate.
Ich versuche das mal so genau zu schildern wie möglich um allen möglichen Frage vorzubeugen.
Erstmal der Code abschnitt in dem das Problem auftritt:
Code:
Client lClient = event.getClient();
Account lAccount = lClient.getAccount();
lAccount.acquireWriteLock();
try {
for (CharacterData lData : lAccount.getCharacters()) {
if (lData.getName().equals(event.getSource().getCharacterName())) {
Transaction lTransaction = _dbSession.beginTransaction();
/* re-attach objects */
_dbSession.update(lAccount.getData());
_dbSession.update(lData);
lAccount.removeCharacter(lData);
_dbSession.delete(lData);
lTransaction.commit();
break;
}
}
} finally {
lAccount.releaseLock();
}
Das Problem liegt beim Delete, das Objekt wird einfach nicht gelöscht.
Aufgrund der Programmarchitektur ist es mir nicht möglich Sessions lange aufzuhalten, so werden die Objekte detached. Sprich in einer früheren Session wird das Objekt "AccountData" geladen (Bestandteil von der Klasse "Account", siehe lAccount.getData()). AccountData sowie CharacterData sind Annotierte Klassen und der Configuration bekannt. AccountData hat eine OneToMany Beziehung zu CharacterData und andersrum eine ManyToOne Beziehung, also Bidirektional. Die OneToMany Beziehung spiegelt dabei die ManyToOne Beziehung (inverse). Der FetchType beider beziehungen ist EAGER.
Meiner Meinung nach muss ich in der neuen Session die alten Datenobjekte wieder attachen, was ich laut hibernate.org und diversen Büchern mit "update(), saveOrUpdate() oder merge()" machen kann. Allerdings funktioniert das löschen bei allen 3 alternativen nicht.
In der Log taucht keine Warn oder Error meldung auf, leider.
Ich hab scheinbar irgendwo den Blick dafür momentan verloren oder weiß einfach noch nicht woran es liegen kann.
Vielleicht könnt ihr mir dabei helfen? ^.^