【发布时间】:2011-06-21 11:14:32
【问题描述】:
在我的自定义身份验证提供程序中,我能够通过我的服务 API 获取域对象,但是当我从一个域对象爬到另一个域对象以获取特定值以执行额外检查时,Spring 抱怨 Hibernate 会话不存在:-
domain.getAnotherDomain().getProperty(); // epic FAIL
我有以下 AOP 事务来用事务包装我的所有项目 API,我很确定我的自定义身份验证提供程序属于以下模式:-
<tx:advice id="txAdvice">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor pointcut="execution(* my.project..*.*(..))" advice-ref="txAdvice" />
</aop:config>
我也配置了 OpenSessionInView 过滤器,但我认为这无论如何都不适用于 Spring Security。
我想我可以创建一个特定的服务 API 来执行所有必需的检查,但我很好奇为什么我不能用适当的事务来包装我的自定义身份验证提供程序。
有什么解释吗?谢谢。
【问题讨论】:
标签: java hibernate spring spring-security