PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Atomikos:dane nie są zapisywane podczas korzystania z PostgreSQL

Rozwiązanie

OK, tajemnica rozwiązana! Okazało się, że potrzebuję jawnie wywołać płukanie () na sesji obiekt.

Poniższa odpowiedź dała mi wskazówkę:
Hibernacja nie zapisuje obiektu w bazie danych?

Przykład

Oto działający przykład (zwróć uwagę na session.flush() które należy nazwać przed zamknięciem sesję ):

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

}


I znowu, gdy używasz MySQL, działa dobrze bez wyraźne spłukiwanie.

Ciekawa obserwacja

Wspomniana powyżej testowa aplikacja internetowa używała czystego Hibernacji konfiguracja i SessionFactory Hibernate (tzn. bez persistence.xml i JPA entityManager ). Ale mam też tę samą aplikację testową skonfigurowaną do korzystania z JPA . W tej aplikacji wszystko działa również bez jawnego opróżniania zarówno z MySQL, jak i PostgreSQL.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie PostgreSQL z 'ANY' nie działa

  2. Metoda kaskadowania miękkich usunięć w relacjach rodzic-dziecko

  3. Słaba wydajność, gdy podobieństwo trygramów i wyszukiwanie pełnotekstowe zostały połączone z Q ind django przy użyciu postgres

  4. Jak zrestartować zliczanie identyfikatorów na tabeli w PostgreSQL po usunięciu niektórych wcześniejszych danych?

  5. Wdrażanie i konfiguracja PostgreSQL za pomocą Puppet