我有一个bean,它在构造函数中访问JPA,例如从数据库预加载缓存。
在应用程序启动时,我收到了
Caused by: java.lang.IllegalStateException: Unable to create Guice injector
应用程序启动失败导致Guice注入
1) Error injecting constructor, play.exceptions.JPAException: The JPA context is not initialized.
JPA Entity Manager automatically start when one or more classes annotated with the @javax.persistence.Entity annotation are found in the application.
这个问题的根本原因,Guice在播放JPA实体管理器之前正在创建我的bean的实例。其余的JPA代码工作正常,如果我在bean的构造函数中注释JPA调用,它也可以正常工作。
使用以下代码段配置我的bean:
public class MainGuiceModule extends AbstractModule {
@Override
protected void configure() {
bind(UserManager.class).to(UserManagerImpl.class).in(Singleton.class);
...
}
}
问题是,如何使用Play从构造函数访问JPA!和Guice?
答案 0 :(得分:3)
最后我找到了如何避免这种异常的方法,我必须用
包装创建injecorplay.Play.plugin(JPAPlugin.class).startTx(true);
和
play.Play.plugin(JPAPlugin.class).closeTx(false);
我会接受更优雅的解决方案