Lösung
OK, Rätsel ist gelöst! Es stellte sich heraus, dass ich explizit spülen () in der Sitzung Objekt.
Die folgende Antwort gab mir einen Hinweis:
Ruhezustand speichert Objekt nicht in der Datenbank?
Beispiel
Hier ist ein funktionierendes Beispiel (achten Sie auf session.flush()
). die vor dem Schließen aufgerufen werden muss eine Sitzung ):
@Service
public class TableOneDaoImpl extends HibernateDaoSupport implements TableOneDao {
@Override
public void save(TableOne tableOne) throws Exception {
Session session = null;
try {
session = getSessionFactory().openSession();
session.save(tableOne);
session.flush();
} catch (Exception e) {
throw new Exception("Could not save tableOne!", e);
} finally {
if (session != null) {
session.close();
}
}
}
}
Und noch einmal, wenn Sie MySQL verwenden, funktioniert es ohne ganz gut explizites Spülen.
Interessante Beobachtung
Die oben erwähnte Test-Webanwendung verwendete reines Hibernate Konfiguration und SessionFactory von Hibernate (also ohne persistence.xml und JPA entityManager ). Aber ich habe auch dieselbe Testanwendung für die Verwendung von JPA konfiguriert . Und in dieser Anwendung funktioniert auch alles ohne explizites Flushen sowohl mit MySQL als auch mit PostgreSQL.