sql >> Databasteknik >  >> RDS >> PostgreSQL

Atomikos:data sparas inte när du använder PostgreSQL

Lösning

OK, mysteriet är löst! Det visade sig att jag uttryckligen behövde ringa spolning ()sessionen objekt.

Följande svar gav mig en ledtråd:
Viloläge sparar inte objekt i databasen?

Exempel

Här är ett fungerande exempel (var uppmärksam på session.flush() som måste anropas före stängning 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();
            }
        }
    }

}


Och igen, när du använder MySQL fungerar det utmärkt utan explicit spolning.

Intressant observation

Ovan nämnda testwebbapplikation använde ren Hibernate konfiguration och Hibernates SessionFactory (dvs utan persistence.xml och JPA entityManager ). Men jag har också samma testapplikation konfigurerad för att använda JPA . Och i den applikationen fungerar även allt utan explicit spolning både med MySQL och PostgreSQL.




  1. Hur hämtar jag var N:te post från en tabell?

  2. sql-maven-plugin med flera avgränsare

  3. Vad betyder föregående i Oracle?

  4. Hur får man date_part-frågan att träffa index?