PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Atomikos:i dati non vengono salvati quando si utilizza PostgreSQL

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.