Løsning
OK, mysteriet er løst! Det viste sig, at jeg var nødt til eksplicit at ringe til skylle () på sessionen objekt.
Følgende svar gav mig et tip:
Dvaletilstand gemmer ikke objektet i databasen?
Eksempel
Her er et fungerende eksempel (vær opmærksom på session.flush()
som skal kaldes inden lukning 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();
}
}
}
}
Og igen, når du bruger MySQL, fungerer det fint uden eksplicit rødmen.
Interessant observation
Ovennævnte testwebapplikation brugte ren Hibernate konfiguration og Hibernates SessionFactory (dvs. uden persistence.xml og JPA entityManager ). Men jeg har også den samme testapplikation konfigureret til at bruge JPA . Og i den applikation fungerer alt også uden eksplicit skylning både med MySQL og PostgreSQL.