PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Atomikos:данните не се записват при използване на PostgreSQL

Решение

Добре, мистерията е разгадана! Оказа се, че трябва изрично да извикам промиване () на сесията обект.

Следният отговор ми даде намек:
Хибернацията не записва обект в базата данни?

Пример

Ето работещ пример (обърнете внимание на session.flush() който трябва да бъде извиканпреди затваряне сесия ):

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

}


И отново, когато използвате MySQL, той работи добре без изрично зачервяване.

Интересно наблюдение

Гореспоменатото тестово уеб приложение използва чист Hibernate конфигурация и SessionFactory на Hibernate (т.е. без persistence.xml и JPA entityManager ). Но също така имам същото тестово приложение, конфигурирано да използва JPA . И в това приложение всичко също работи без изрично промиване както с MySQL, така и с 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. Импортиране на CSV данни в приложението Rails, като се използва нещо различно от идентификатора на асоциацията

  2. Escape входни данни за postgres

  3. Как да премахнете елементи от масив в PostgreSQL?

  4. Множество бази данни с Rails не работят за отдалечена база данни

  5. Управление на високата наличност на PostgreSQL – Част I:Автоматично отказване на PostgreSQL