Soluzione
OK, il mistero è risolto! Si è scoperto che avevo bisogno di chiamare esplicitamente lavaggio () nella sessione oggetto.
La seguente risposta mi ha dato un suggerimento:
Ibernazione non salvando l'oggetto nel database?
Esempio
Ecco un esempio funzionante (prestare attenzione a session.flush()
che deve essere chiamato prima della chiusura una sessione ):
@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();
}
}
}
}
E ancora, quando si usa MySQL funziona benissimo senza lavaggio esplicito.
Osservazione interessante
L'applicazione web di prova sopra menzionata utilizzava puro Sospensione configurazione e SessionFactory (cioè senza persistence.xml e JPA EntityManager ). Ma ho anche la stessa applicazione di test configurata per utilizzare JPA . E in quell'applicazione tutto funziona anche senza svuotamento esplicito sia con MySQL che con PostgreSQL.