sql >> Base de Datos >  >> RDS >> PostgreSQL

Atomikos:los datos no se guardan cuando se usa PostgreSQL

Solución

OK, ¡el misterio está resuelto! Resultó que necesitaba llamar explícitamente a descarga () en la sesión objeto.

La siguiente respuesta me dio una pista:
¿Hibernate no guarda el objeto en la base de datos?

Ejemplo

Aquí hay un ejemplo de trabajo (preste atención a session.flush() que debe llamarse antes de cerrar una sesión ):

@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();
            }
        }
    }

}


Y de nuevo, cuando se usa MySQL funciona muy bien sin lavado explícito.

Observación interesante

La aplicación web de prueba mencionada anteriormente utilizó Hibernate puro configuración y SessionFactory de Hibernate (es decir, sin persistence.xml y JPA entityManager ). Pero también tengo la misma aplicación de prueba configurada para usar JPA . Y en esa aplicación todo funciona también sin vaciado explícito tanto con MySQL como con PostgreSQL.