Lösning
OK, mysteriet är löst! Det visade sig att jag uttryckligen behövde ringa spolning () på sessionen objekt.
Följande svar gav mig en ledtråd:
Viloläge sparar inte objekt i databasen?
Exempel
Här är ett fungerande exempel (var uppmärksam på session.flush()
som måste anropas före stängning en session ):
@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();
}
}
}
}
Och igen, när du använder MySQL fungerar det utmärkt utan explicit spolning.
Intressant observation
Ovan nämnda testwebbapplikation använde ren Hibernate konfiguration och Hibernates SessionFactory (dvs utan persistence.xml och JPA entityManager ). Men jag har också samma testapplikation konfigurerad för att använda JPA . Och i den applikationen fungerar även allt utan explicit spolning både med MySQL och PostgreSQL.