2013-05-03 8 views
2

Spring MVC, Hibernate 및 JPA로 작업한다. 컨트롤러에서 컬렉션을로드하려고 시도하고 LazyLoading 예외로 실행되었습니다. 그래서 저는 Egar 로딩으로 전환하고 싶었습니다.Hibernate/JPA는 열렬한 로딩을 할 수 없다.

나는

@Entity 
@Table(name = "flightroutes") 
public class Flightroute extends DomainObject<Integer> { 

    @ManyToMany(fetch=FetchType.EAGER) 
    private List<MeasureStation> measureStation; 

@Entity 
@Table(name = "measurestations") 
public class MeasureStation extends DomainObject<Long> { 
    @ManyToMany(mappedBy = "measureStation") 
    private List<Flightroute> flightroutes; 

(Flightroute 및 Measurstations 느릅 나무는 많은 Realtion에 많은에있다) 그러나 이것은 응용 프로그램이 시작할 때 예외

다음에 내가 실행, 작동하지 않는 것 두 종류가

Mai 03, 2013 5:58:08 PM org.apache.catalina.core.StandardContext listenerStart SEVERE : Exc 컨텍스트에 초기화 된 이벤트를 org.springframework.web.context.ContextLoaderListener 클래스의 리스너 인스턴스로 보냄 org.springframework.beans.factory.BeanCreationException : ServletContext 리소스 [/ WEB-INF/applicationContext]에 정의 된 이름 'entityManagerFactory'로 bean을 만드는 동안 오류가 발생했습니다. xml] : init 메소드 호출에 실패했습니다. 중첩 예외는 javax.persistence.PersistenceException입니다 : [PersistenceUnit : atm] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1488) 을 org.springframework.beans.factory에 빌드 할 수 없습니다. org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject에서 support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:524) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:461) 에서 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:223) at org.springframework.beans.facto org.springframework.context.support.AbstractApplicationContext.getBean에서 org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:194) 에서 ry.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:292) (AbstractApplicationContext.java:1117) 조직에서 org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:479) 에서 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:922) 에서 . springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext (ContextLoader.java:389) at org.springframework.web.context.ContextLoader.initWebApplicationContext (ContextLoader.java:294) at org.springframework.w eb.context.ContextLoaderListener.contextInitialized (ContextLoaderListener.java:112) at org.apache.catalina.core.StandardContext.listenerStart (StandardContext.java:4791) at org.apache.catalina.core.StandardContext.startInternal (StandardContext. 자바 : 5285) org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:150) 에서 org.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1559) 조직에서 에서. java.util.concurrent.FutureTask $ Sync.innerRun (알 수없는 소스) 의 java.util.concurrent.FutureTask.run (알 수없는 소스)에서 at java.util.concurrent.ThreadPoolExecutor.runWorker (알 수없는 소스) at java.util.concurren t.ThreadPoolExecutor $ Worker.run (알 수없는 소스) 에서 java.lang.Thread.run (알 수없는 소스) 발생 원인 : javax.persistence.PersistenceException : org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory (Ejb3Configuration.java:904)에서 org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory (Ejb3Configuration.java:930)에서의 EntityManagerFactory 을 구축 할 수 없습니다 : [PersistenceUnit 기압] 에서 조직 org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet에서 org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory (LocalContainerEntityManagerFactoryBean.java:288) 에서 .hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory (HibernatePersistence.java:92) (AbstractEntityManagerFactoryBean .java : 310) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1547)org.hibernate.loader.MultipleBagFetchException : 22 개 가에 의한 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1485) ...에서동시에 org.hibernate 여러 가방 를 가져올 수 없습니다 .loader.BasicLoader.postInstantiate (BasicLoader.java:93) at org.hibernate.loader.entity.EntityLoader. (EntityLoader.java:118) at org.hibernate.loader.entity.EntityLoader. (EntityLoader.java:70) org.hibernate.loader.entity.EntityLoader AT) . (EntityLoader.java:53) org.hibernate.loader.entity.BatchingEntityLoaderBuilder.buildLoader (BatchingEntityLoaderBuilder.java:75 AT)에서 org.hiberate.persister.entity 레. AbstractEntityPersister.createEntityL oader org.hibernate.persister.entity.AbstractEntityPersister.createLoaders에서 org.hibernate.persister.entity.AbstractEntityPersister.createEntityLoader (AbstractEntityPersister.java:2496)에서 (AbstractEntityPersister.java:2483) (AbstractEntityPersister.java:3832)에서 org.hibernate.persister.entity.AbstractEntityPersister.postInstantiate org.hibernate.internal.SessionFactoryImpl에서 (AbstractEntityPersister.java:3818) org.hibernate.persister.entity.SingleTableEntityPersister.postInstantiate (SingleTableEntityPersister.java:1018)에서 . (SessionFactoryImpl .java : 461) at org.hibernate.cfg.Configuration.buildSessionFactory (Configuration.java:1750) at org.hibernate.ejb.EntityManagerFactoryImpl. (EntityManagerFactoryImpl.java:94) at org.hibernate .ejb.Ejb3Configuration.buildEntityManagerFactory (Ejb3Configuration.java:920) ... 더보기 (28)

나는 그것을 얻지 않는다, 사람이 나를 그러는 및/또는 왜이 앞으로 일어날 설명 할 수 있습니까?

답변

1

는 발견 :

@ManyToMany(fetch=FetchType.EAGER) 
    private List<MeasureStation> measureStation; 

최대 절전 모드가리스트 내에서 요소의 순서를 유지하고 싶어, 두 개의 목록이있는 경우 (등 조인과), 캔트 순서를 유지하는 최대 절전 모드.

have a look

+0

이 통찰력을 가져 주셔서 감사합니다! 하나의 목록 만 사용하는 경우에도이 오류가 발생할 수있는 것처럼 보입니다. 링크 된 기사에서 제안한대로 @IndexColumn (name = "INDEX_COL")을 사용하면 쉽게 해결할 수 있습니다. – Michael