Как мы получим доступ к базе данных из AuditTrailInterceptor? - PullRequest
0 голосов
/ 11 июля 2010

Я пытаюсь получить доступ к базе данных из Hibernate Interceptor (мне нужно проверять только определенные объекты, которые определены в другой таблице), и доступ непроходим (я получаю исключения).Есть ли способ получить доступ к базе данных в перехватчике?

Мой AuditTrailInterceptor:

public class AuditTrailInterceptor extends EmptyInterceptor {

public boolean onSave(Object entity, Serializable id, Object[] state, String[]    
propertyNames, Type[] types) {
   AuditTrailService serviceComp = (AuditTrailService) SpringBeanFinder
                       .findBean(SpringBeanFinder.AUDIT_SERVICE);
    serviceComp.getObjectAuditCompanies(theCompany)
    return false;
  }

}

@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
      public Collection<ObjectAuditCompany> getObjectAuditCompanies(Company company){
            return  objectAuditCompanyDAO.findByQuery("from " + objectAuditCompanyDAO.getPersistentClass().getName() + " where company=? ", company);

      }

AuditTrailInterceptor, определенный в applicationContext.xml как свойство

<bean id="onboardSessionFactory" parent="sessionFactory">
<property name="entityInterceptor">
              <bean class="com.mycompany.daoimpl.AuditTrailInterceptor" />
  </property>
</bean>

Спасибо!

1 Ответ

0 голосов
/ 11 июля 2010

Не знаю точно, с какой проблемой вы столкнулись, но я помню один камень преткновения, который я видел при работе с перехватчиками.

Чтобы получить доступ к базе данных в перехватчике или приемнике событий, вы должны открыть новый сеанс и не можете просто поделиться сеансом с перехваченной операцией гибернации, что имеет смысл, если вы размышляете, что делает перехватчик немного ...

Пример кода на вики JBoss для использования как перехватчиков, так и прослушивателей событий для ведения журнала аудита, который может быть полезен.

Если это не поможет вам найти решение, возможно, вы захотите опубликовать больше того, что вы пробовали, и трассировку проблемы в стеке.

...