hibernate commit: показывает зафиксированный в журнале, но на самом деле это не так - PullRequest
0 голосов
/ 25 июля 2011

Пожалуйста, посмотрите на этот код.Persist работает для таблицы с именем Candidate, но не для другой таблицы с именем VerifyLink, тогда как hibernate показывает, что она сохраняется в файле журнала.Пожалуйста, посмотрите на журнал ниже. В первом случае он показывает запрос «вставить в кандидата», но во втором случае он не показывает запрос.что не так?

protected final void doInTransaction(PersistenceActionWithoutResult action) throws EntityAccessorException {
    EntityManager em = emf.createEntityManager();
    try {
        int status = 0;
        status = userTransaction.getStatus();
        if (Status.STATUS_ACTIVE != status){
            count.incrementAndGet();
            userTransaction.begin();
        }
        action.execute(em);
        System.out.println(em);
        status = userTransaction.getStatus();
        System.out.println("status : " + status);
        if (Status.STATUS_ACTIVE == status) {
            if (0 == count.decrementAndGet()) {
                userTransaction.commit();
                System.out.println("committed : ");
            }
        }
    } catch (Exception e) {
        try {
            userTransaction.rollback();
            System.out.println("rolled back :");
            e.printStackTrace();
        } catch (Exception ex) {
            Logger.getLogger(AbstractEntityAccessor.class.getName()).log(Level.SEVERE, null, ex);
        }
        throw new EntityAccessorException(e);
    } finally {
        System.out.println("transaction close :");
        em.close();
    }
}

Когда я впервые что-то фиксирую

[# | 2011-07-25T12: 38: 40.020 + 0530 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 61; _ThreadName = Thread-1; | org.hibernate.ejb.EntityManagerImpl@15e3c52 | #]

[# |2011-07-25T12: 38: 40,021 + 0530 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 61; _ThreadName = Thread-1; | статус: 0 | #]

[# | 2011-07-25T12: 38: 40.093 + 0530 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 61; _ThreadName = Thread-1; | Hibernate: вставить в Candidate (комментарий, creation_date, currentCompany, current_ctc, cv, cv_name, dob, email_id, email_id_verified, Ожидаемый_ctc, first_name, last_name, местоположение, мобильный, уведомление_период, пароль, sex, upadte_date, years_of_exp, cand_id) значения (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) | #]

[# | 2011-07-25T12: 38: 40.164 + 0530 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 61; _ThreadName = Thread-1; | совершено: | #]

[#| 2011-07-25T12: 38: 40,165 + 0530 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 61; _ThreadName = Thread-1; |закрытие транзакции: | #]

[# | 2011-07-25T12: 38: 47.158 + 0530 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 61; _ThreadName = Thread-1; | org.hibernate.ejb.EntityManagerImpl@1fd91c4 | #]

[# | 2011-07-25T12: 38: 47.159 + 0530 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 61; _ThreadName = Thread-1; | статус: 0 | #]

[# | 2011-07-25T12: 38: 47.159 + 0530 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 61; _ThreadName = Thread-1; | совершено:| #]

[# | 2011-07-25T12: 38: 47.159 + 0530 | INFO | glassfish3.0.1 | javax.enterprise.system.std.com.sun.enterprise.v3.services.impl | _ThreadID = 61; _ThreadName = Thread-1; | транзакция закрыта: | #]

1 Ответ

0 голосов
/ 25 июля 2011

Я добавил em.joinTransaction () после userTransaction.begin (), как показано ниже, и это, похоже, решило проблему. Это работает сейчас. Я получил подсказку от

if (Status.STATUS_ACTIVE != status){
                count.incrementAndGet();
                userTransaction.begin();
                em.joinTransaction();
            }
...