2012-12-31 2 views
1

생성자에서 JPA에 액세스하는 bean이 있습니다 (예 : 데이터베이스에서 미리로드 된 캐시). 응용 프로그램에play.exceptions.JPAException : JPA 컨텍스트가 초기화되지 않았습니다.

내가

Caused by: java.lang.IllegalStateException: Unable to create Guice injector 

응용 프로그램 시작이

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 inits 플레이하기 전에 Guice 주입의 원인을 실패 받기 시작 엔티티 관리자. 나머지 JPA 코드는 정상적으로 작동합니다. 콩 생성자에서 JPA 호출에 주석을 달면 잘 동작합니다.

는 다음의 코드를 사용하여 내 콩을 구성하려면 :

public class MainGuiceModule extends AbstractModule { 
    @Override 
    protected void configure() { 
      bind(UserManager.class).to(UserManagerImpl.class).in(Singleton.class); 
       ... 
     } 
} 

문제는 재생 사용하여 생성자에서 JPA에 액세스하는 방법입니다! 그리고 Guice?

답변

2

마지막으로 나는이 예외를 방지하는 방법을 방법을 발견, 나는 좀 더 우아한 해결책

과 대답을 받아 들일 것입니다

play.Play.plugin(JPAPlugin.class).startTx(true); 

play.Play.plugin(JPAPlugin.class).closeTx(false); 

와 injecor의 생성을 포장해야