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

Atomikos:data bliver ikke gemt, når du bruger PostgreSQL

Løsning

OK, mysteriet er løst! Det viste sig, at jeg var nødt til eksplicit at ringe til skylle ()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.




  1. Afkort tabel i Oracle får fejl

  2. Sådan håndteres datoer korrekt i forespørgselsbegrænsninger

  3. MySql - prøver at importere en database, får beskeden 'Systemet kan ikke finde den specificerede fil'.

  4. Oracle DBA spørgsmål i realtid