PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Atomikos:dados não são salvos ao usar o PostgreSQL

Solução


Pronto, o mistério está resolvido! Descobri que eu precisava chamar explicitamente limpar () na sessão objeto.

A resposta a seguir me deu uma dica:
Hibernar não salva o objeto no banco de dados?

Exemplo


Aqui está um exemplo funcional (preste atenção em session.flush() que deve ser chamado antes de fechar uma sessão ):
@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 novamente, ao usar o MySQL, ele funciona bem sem rubor explícito.

Observação interessante


O aplicativo web de teste mencionado acima usou Hibernate puro configuração e SessionFactory do Hibernate (ou seja, sem persistence.xml e JPA entityManager ). Mas também tenho o mesmo aplicativo de teste configurado para usar JPA . E nessa aplicação tudo também funciona sem flushing explícito tanto com MySQL quanto com PostgreSQL.