Wir aktualisieren unser Projekt von Hibernate 3.6.10 auf Hibernate 5.2.0, erhalten jedoch Fehler bei der Migration. Ich habe hier auf StackOverFlow und Google viele Posts gelesen, aber keine Lösung gefunden.Hibernate5, Spring 4 - org.hibernate.HibernateException: Transaktionssynchronisierte Sitzung für aktuellen Thread konnte nicht abgerufen werden
Betrachten Sie die Codenummer this website. Ich habe nur die Datenbankverbindungen zu PostgreSQL Datenbank gemacht.
Wenn ich dieses Beispiel nach dem Hinzufügen dieser JARs (ALL Added JAR files screenshot) mit Ausnahme der Hibernate JAR 3.6.10-Finale, funktioniert es völlig in Ordnung. Aber wenn ich diese Änderungen für Hibernate 5 Upgrade machen:
- Ändern JAR-Datei hinzugefügt, wie Hibernate-core-5.2.1-Final.jar
- Ändern Referenz von Hibernate3 Dateien hibernate5 (3 Ersatz; 1 in EmployeeDao Import und weitere 2 in applicationContext.xml)
Es führt den folgenden Fehler:
Exception in thread "main" org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
at org.springframework.orm.hibernate5.HibernateTemplate.checkWriteOperationAllowed(HibernateTemplate.java:1132)
at org.springframework.orm.hibernate5.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:618)
at org.springframework.orm.hibernate5.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:615)
at org.springframework.orm.hibernate5.HibernateTemplate.doExecute(HibernateTemplate.java:340)
at org.springframework.orm.hibernate5.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:307)
at org.springframework.orm.hibernate5.HibernateTemplate.save(HibernateTemplate.java:615)
at hibernate.test.EmployeeDao.saveEmployee(EmployeeDao.java:12)
at hibernate.test.InsertTest.main(InsertTest.java:21)
und ich habe auch diese Änderungen aber den gleichen Fehler habe: 1. kommentierte dies in EmployeeDao:
/*HibernateTemplate template;
public void setTemplate(HibernateTemplate template) {
this.template = template;
} */
und sich HibernateDaoSupport, so dass es session Setter gibt.
Und unten Code ersetzen zu:
public void saveEmployee(Employee e){
template.save(e);
}
dies:
public void saveEmployee(Employee e){
this.getHibernateTemplate().save(e);
}
Nach dem Debuggen kam ich zu wissen, dass die erwähnte in HibernateTemplate-Klasse von Spring-orm-4.3.1 Jar wirft Error.
Kann jemand mir helfen, mit dieser aus: O. Wir sind hier seit Ewigkeiten festgefahren. Ich schätze Hilfe.
Links zur Referenz oben: oder pic 2- http: //i.stack.imgur.com/NwPwl.png für Bild 3- http://i.stack.imgur.com/Zgx5d.png – JavaDeveloper
Zunächst würde ich davon abraten, 'HibernateTemplate' zu verwenden. Verweisen Sie diese Frage http://stackoverflow.com/questions/4067775/spring-hibernate-template-when-to-use-and-why. Lesen Sie die akzeptierte Antwort. Sie müssen von HibernateTemplate zu SessionFactory und zur deklarativen Transaktionsverwaltung migrieren. –
@TheCoder Vielen Dank für Ihre Antwort. In diesem Projekt ist es so groß und jede neue Implementierung kann viel Zeit in Anspruch nehmen. Ich bin durch den erwähnten Thread gegangen und sie sagen, dass es aus dem Frühling entfernt wurde? aber ich verwende über den Import 'org.springframework.orm.hibernate5.HibernateTemplate'. Wie auch immer, bitte beantworte die obige Frage wenn möglich, das ist alles was ich brauche. Danke. – JavaDeveloper