gpt4 book ai didi

java - 自动连接到 hibernate 拦截器

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:27:14 25 4
gpt4 key购买 nike

我正在扩展 hibernate.EmptyInterceptor,在我的实现中,我想自动连接到某些服务,但它们返回 null。我在类上添加了 @Component 注释。我的代码:

<property name="jpaPropertyMap">
<map>
<entry key="javax.persistence.transactionType" value="JTA" />
<entry key="hibernate.current_session_context_class" value="jta" />
<entry key="hibernate.transaction.manager_lookup_class"
value="com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup" />
<entry key="hibernate.connection.autocommit" value="false" />
<entry key="hibernate.ejb.interceptor" value="com.net.filter.AuditInterceptor"/>
</map>
</property>

和类(class):

@SuppressWarnings("serial")
@Component
public class AuditInterceptor extends EmptyInterceptor {

@Autowired
private IUserSessionService userSessionService;

最佳答案

我知道这可能来晚了两年 - 但我正在寻找相同问题的答案,并认为这对将来的人有用。

查看 Hibernate 代码,如果您提供类名,Hibernate 会实例化一个新的拦截器实例,但如果您传入一个 bean 实例引用,它将使用它。

所以

<bean id="myInterceptor" class="com.net.filter.AuditInterceptor" />

...

<property name="jpaPropertyMap">
<map>
<entry key="javax.persistence.transactionType" value="JTA" />
<entry key="hibernate.current_session_context_class" value="jta" />
<entry key="hibernate.transaction.manager_lookup_class"
value="com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup" />
<entry key="hibernate.connection.autocommit" value="false" />
<entry key="hibernate.ejb.interceptor" >
<ref bean="myInterceptor" />
</entry>
</map>
</property>

现在 bean myInterceptor 由 Spring 管理, Autowiring 将起作用!

关于java - 自动连接到 hibernate 拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21114164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com