Zdravim,

nemam v tomto smeru zkusenost s hibernate, ale bezne kdyz neco takoveho potrebuji a mam JTA transakci, tak na te existujici udelam suspend(), pak zacnu novou, provedu co potrebuji a nasledne se k te puvodni vratim pres operaci resume() a pokracuji v krasojizde.


Ale co se tyce Hibernate, tak jsem nasel treba sample, jak pouzivat 2 sessions http://www.java2s.com/Code/Java/Hibernate/UseTwoSessions.htm - predpokladam, ze toto by slo pouzit i u Vas - v jedne session budete zpracovavat ta data a v druhe session budete zapisovat do logu, apod.

Petr


Dne 21.7.2011 11:03, Ivan Polak napsal(a):
Zdravim konferenciu,

mam dlho trvajuci vypocet, ktory spracovava velky pocet zaznamov a
nakonci zapise vysledky (zapis do DB sa robi po spracovani kazdeho
zaznamu, ale transakcia sa commitne az ked sa skonci cely vypocet).

pocas priebehu tohoto vypoctu by som potreboval si niekde do DB
poznacit kolko uz zaznamov bolo spracovanych. chcel som to robit
nasledovnou funkciou:

Session session =
HibernateSessionHelper.getHibernateSession(getEntityManager());
        Transaction transaction = session.beginTransaction();
        String sql = "UPDATE ccc set value = value + 1 where id = 1";
        SQLQuery query = session.createSQLQuery(sql);
        query.executeUpdate();
        transaction.commit();

pocet sa v DB aktualizuje (aj sa zapise do DB), ale po spracovavani
dalsieho zaznamu pri vykonani ulozenia do DB (DB sa nezapisuje) pride
k nasledovnej chybe:

org.springframework.dao.InvalidDataAccessApiUsageException:
no transaction is in progress; nested exception is
javax.persistence.TransactionRequiredException: no transaction is in
progress

neviete, prosim ako spravit takyto zapis do DB mimo aktivnej transakcie.

dakujem

Ivan


--
Petr

Odpovedet emailem