Ich möchte einige meiner Tabelle in der Datenbank aktualisieren und wollen alle diese Arbeit in 1 Transaktion, erstens löschen ich einige Einträge in branchbuildin (Tabelle) und neue nach dieser Aktion einfügen Das Problem trat auf, wenn ich mit demselben buildname und branch_fk einfüge und eingebe (weil ich diese Beschränkung für diese Tabelle habe (uniqueConstraints = {@ UniqueConstraint (columnNames = {"buildingname", "branch_fk"})})), aber wenn ich nicht verwende Hibernate-Sitzung und verwenden normale JDBC-Transaktion Ich habe dieses Problem nicht.Hibernate-Transaktion doppeltes Problem
List<Integer> allBranchBuilding = branchBuildingDao.getAllBranchBuildingID(pkId, sess);
for (Integer integer : allBranchBuilding) {
branchBuildingDao.delete(integer, sess); // delete kardane tamame BranchBuilding ha va tel haie aanha
}
Address myAdr = new Address();
setAddress(myAdr, centralFlag, city, latit, longit, mainstreet, remainAdr, state);
BranchBuildingEntity bbe = new BranchBuildingEntity();
setBranchBuildingEntity(bbe, be, myAdr, city, centralFlag, latit, longit, mainstreet, buildingName, remainAdr, state, des);
branchBuildingDao.save(bbe, sess);//Exception Occurred
ich meine Session am ersten Methode:
Session sess = null;
sess = HibernateUtil.getSession();
Transaction tx = sess.beginTransaction();
Tanx aber was passiert, wenn ich die Sitzung flush und danach meine Verbindung CUTOFF führt die Transaktion Rollback nach Flush? Ich brauche alle meine Arbeit in einer Transaktion (kann ich Flush zwischen ihnen und dun verletzen Transaktion Rollback und Commit?) – Am1rr3zA
KLE ist richtig (außer "evict()" auf einer zuvor gelöschten Entität aufzurufen, was sehr fraglich ist, aber für das vorliegende Problem nicht relevant ist) "flush" ist nur ein Prozess zum Synchronisieren des Sitzungsstatus mit der Datenbank, z. Es werden die erforderlichen Anweisungen zum Einfügen/Aktualisieren/Löschen in die Datenbank ausgegeben. In Bezug auf die Transaktion unterscheidet sich nichts von der manuellen Abgabe der gleichen Anweisungen - es sei denn, eine Transaktion ist festgeschrieben, werden alle diese Anweisungen zurückgesetzt (wegen expliziten Rollbacks, abgebrochener Verbindung, Serversterben, was hast du). – ChssPly76
@ ChssPly76 Hallo. Ich bin neugierig auf Ihren "Räumungs" -Kommentar. Könnten Sie das Thema näher erläutern? – KLE