使用Spring MVC,Hibernate和JPA。 我试图从Controller加载一些Collection并运行到LazyLoading Exception。 所以我想切换到Egar加载。
我有两个班级(Flightroute和Measurstations,它们处于多对多的现实中)
@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;
但这似乎不起作用,当应用程序启动时遇到以下异常
Mai 03,2013 5:58:08 PM org.apache.catalina.core.StandardContext listenerStart SEVERE:将上下文初始化事件发送到类org.springframework.web.context.ContextLoaderListener的侦听器实例的异常 org.springframework.beans.factory.BeanCreationException:使用名称&#39; entityManagerFactory&#39;创建bean时出错。在ServletContext资源[/WEB-INF/applicationContext.xml]中定义:init方法的调用失败;嵌套异常是javax.persistence.PersistenceException:[PersistenceUnit:atm]无法构建EntityManagerFactory 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1488) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) at org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:295) 在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) 在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 在org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1117) 在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:922) 在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) 在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) 在org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) 在org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4791) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285) 在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1559) 在org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask $ Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source) 在java.lang.Thread.run(未知来源) 引起:javax.persistence.PersistenceException:[PersistenceUnit:atm]无法构建EntityManagerFactory 在org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:930) 在org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:904) 在org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:92) 在org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:288) 在org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1547) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1485) ......还有22个 引起:org.hibernate.loader.MultipleBagFetchException:无法同时获取多个包 在org.hibernate.loader.BasicLoader.postInstantiate(BasicLoader.java:93) 在org.hibernate.loader.entity.EntityLoader。(EntityLoader.java:118) 在org.hibernate.loader.entity.EntityLoader。(EntityLoader.java:70) 在org.hibernate.loader.entity.EntityLoader。(EntityLoader.java:53) 在org.hibernate.loader.entity.BatchingEntityLoaderBuilder.buildLoader(BatchingEntityLoaderBuilder.java:75) 在org.hibernate.persister.entity.AbstractEntityPersister.createEntityLoader(AbstractEntityPersister.java:2483) 在org.hibernate.persister.entity.AbstractEntityPersister.createEntityLoader(AbstractEntityPersister.java:2496) 在org.hibernate.persister.entity.AbstractEntityPersister.createLoaders(AbstractEntityPersister.java:3832) 在org.hibernate.persister.entity.AbstractEntityPersister.postInstantiate(AbstractEntityPersister.java:3818) 在org.hibernate.persister.entity.SingleTableEntityPersister.postInstantiate(SingleTableEntityPersister.java:1018) 在org.hibernate.internal.SessionFactoryImpl。(SessionFactoryImpl.java:461) 在org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1750) 在org.hibernate.ejb.EntityManagerFactoryImpl。(EntityManagerFactoryImpl.java:94) 在org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:920) ......还有28个
我没有得到它,任何人都可以帮助我,和/或解释为什么会发生这种情况?
答案 0 :(得分:2)
发现:
@ManyToMany(fetch=FetchType.EAGER)
private List<MeasureStation> measureStation;
如果有两个列表,hibernate想要保持列表中元素的排序(带连接等),hibernate不能保持顺序。
拥有look