@Override
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
log.debug("[HibernateLocalTransactionInterceptor]进入=》"+methodInvocation.getMethod().getName());
SessionFactoryHolder sessionFH = GuiceContext.getInstance().getBean(SessionFactoryHolder.class);
SessionInfo session = sessionFH.getSessionInfo();
Method method = methodInvocation.getMethod();
Transactional transactional = method.getAnnotation(Transactional.class);
if(transactional == null){
transactional = method.getDeclaringClass().getAnnotation(Transactional.class);
}
TransactionalType type = transactional.type();
final Transaction transaction = session.getSession().getTransaction();
if(type != TransactionalType.READOLNY){
session.setNeed2ProcessTransaction(true);
}
if(transaction.isActive()){
return methodInvocation.proceed();
}