sql >> Databáze >  >> RDS >> PostgreSQL

Atomikos:data se při používání PostgreSQL neukládají

Řešení

OK, záhada vyřešena! Ukázalo se, že jsem potřeboval výslovně zavolat spláchnout () na relaci objekt.

Následující odpověď mi dala nápovědu:
Hibernace neukládá objekt do databáze?

Příklad

Zde je funkční příklad (věnujte pozornost session.flush() který je třeba zavolat před uzavřením relaci ):

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

}


A znovu, při použití MySQL to funguje dobře bez explicitní splachování.

Zajímavý postřeh

Výše zmíněná testovací webová aplikace používala čistou Hibernate konfigurace a Hibernate's SessionFactory (tj. bez persistence.xml a JPA entityManager ). Ale mám také stejnou testovací aplikaci nakonfigurovanou pro použití JPA . A v této aplikaci také vše funguje bez explicitního vyplachování jak s MySQL, tak s PostgreSQL.




  1. V oboru názvů (, ) byla nalezena více než jedna tabulka - SchemaExtractionException

  2. případový příkaz v uložené proceduře

  3. Chyba ALTER TYPE ve vztahu postgres neexistuje

  4. Rozdíl mezi použitím REFERENCES s CIZÍM KLÍČEM a bez něj?