Java 使用Guice休眠5个实体侦听器
我正在玩新的Hibernate 5,很高兴看到(与以前的/遗留API相比)组装SessionFactory和系列是多么容易 现在,我想提供我自己的ListenerFactory,它基本上将实体侦听器的创建和依赖项注入委托给Guice 除了SessionFactoryBuilder中的applyBeanManager外,我找不到如何执行此操作:Java 使用Guice休眠5个实体侦听器,java,hibernate,orm,hibernate-5.x,entitylisteners,Java,Hibernate,Orm,Hibernate 5.x,Entitylisteners,我正在玩新的Hibernate 5,很高兴看到(与以前的/遗留API相比)组装SessionFactory和系列是多么容易 现在,我想提供我自己的ListenerFactory,它基本上将实体侦听器的创建和依赖项注入委托给Guice 除了SessionFactoryBuilder中的applyBeanManager外,我找不到如何执行此操作: sessionFactoryBuilder.applyBeanManager(new ListenerFactory() { @Override
sessionFactoryBuilder.applyBeanManager(new ListenerFactory() {
@Override
public void release() {
}
@Override
public <T> Listener<T> buildListener(final Class<T> listenerClass) {
return () -> injector.getInstance(listenerClass);
}
});
sessionFactoryBuilder.applyBeanManager(新ListenerFactory(){
@凌驾
公开无效释放(){
}
@凌驾
公共侦听器buildListener(最终类listenerClass){
return()->injector.getInstance(listenerClass);
}
});
不幸的是,bc Hibernate期望ListenerFactory为null(并使用默认ListenerFactory)或是BeanManager的实例,但这不起作用
想知道是否有其他方法提供我自己的ListenerFactory
谢谢。这是因为
BeanManager
是为CDI设计的。如果您想在CDI之外对其进行定制,您需要打开JIRA问题,描述您的用例和您想要做的事情
或者,如果您想将依赖项注入到实体中(我觉得这很奇怪,因为它破坏了层封装),您可以使用LoadEventListener
自定义实体的创建方式:
sessionFactory
.getServiceRegistry()
.getService( EventListenerRegistry.class )
.prependListeners( EventType.LOAD, new MyGuiceEntityListener() );
“谢谢”将引发一个JIRA问题。