Spring,AOP - 如何在Hibernate DAO事务关闭后定义方面

时间:2014-09-18 18:07:56

标签: spring hibernate transactions aspectj dao

我的项目是Spring和Hibernate的Web应用程序。我需要对我的DAO层返回的数据执行一些例行操作,并提交事务并关闭会话。我尝试使用带有这样注释的方面:

@AfterReturning(pointcut = "execution(* com.dao..*.*(..))", returning = "result")
public void afterReturning(JoinPoint joinPoint, Object result){
    processResult(result);
}

或使用

@Around("execution(* com.dao..*.*(..))")

但是在任何一种情况下我都得到了像这样的Hibernate异常:

    org.hibernate.TransientObjectException:object引用未保存的瞬态实例 - 在刷新之前保存瞬态实例

当然,如果我在我的服务中应用相同的操作,一切都会有效:

public void serviceMethod(Object param) {
    Object result = dao.getObject(param);
    processResult(result);
}

'因为我需要对每个DAO方法的结果使用processResult我不愿意使用后一种方法,并且非常感谢关于如何使用这两个方面或其他替代方法的一些建议....

0 个答案:

没有答案