query.getResultList()
對於下面的一段代碼是失敗的。Hibernate query.getResultList()異常
Query query=EntityManager.createQuery("select m from AbstractGasTrade m");
List<T> resultList = query.getResultList();
它拋出以下異常
javax.persistence.PersistenceException: org.hibernate.InstantiationException: 不能實例化抽象類或接口 : com.pse.lib.trading.energy。 naturalgas.AbstractGasTrade 在 org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614) 在 org.hibernate.ejb.QueryImpl.getRe sultList(QueryImpl.java:76) at com.pse.lib.db.dao.GenericDao.findAll(GenericDao.java:68) at com.pse.lib.db.logic.GenericManager.findAll(GenericManager。的java:75) 處 sun.reflect.NativeMethodAccessorImpl com.pse.lib.db.logic.GenericManager.findAll(GenericManager.java:86) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(母語 法)。調用(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 在 org.springframework.aop .framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation .java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 在$ Proxy29.findAll(來源不明) 在 com.pse.katana.services.possvc.PositionService.createPositionSegment(PositionService.java:180) 在 com.pse.katana.services.possvc.PositionService.handlePositionSubscription( PositionService.java:150) at com.pse.katana.services.possvc.PositionService.accept(PositionService.java:243) at com.pse.katana.messages.PositionSubscriptionRequest.visit(PositionSubscriptionRequest.java:43) at com.pse.katana.services.possvc.PositionService.dispatch(PositionService.java:266) at com.pse.lib.servicengine.processor.AsynchronousOperation.run(AsynchronousOperati on.java:42) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.runTask(ThreadPoolExecutor.java:886) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:908) 在 java.lang.Thread.run(Thread.java:662) 產生的原因: org.hibernate.InstantiationException: 不能實例化抽象類或接口 : com.pse.lib.trading.energy.naturalgas。AbstractGasTrade 在 org.hibernate.tuple.PojoInstantiator.instantiate(PojoInstantiator.java:101) 在 org.hibernate.tuple.PojoInstantiator.instantiate(PojoInstantiator.java:123) 在 org.hibernate.tuple.entity。 AbstractEntityTuplizer.instantiate(AbstractEntityTuplizer.java:374) 在 org.hibernate.persister.entity.AbstractEntityPersister.instantiate(AbstractEntityPersister.java:3634) 在 org.hibernate.impl.SessionImpl.instantiate(SessionImpl.java:1302) at org.hibernate.impl.SessionImpl.instantiate(SessionImpl.java:1291) at org.hibernate.loader.Loade r.instanceNotYetLoaded(Loader.java:1323) 在 org.hibernate.loader.Loader.getRow(Loader.java:1230) 在 org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:603) 在 org.hibernate.loader.Loader.doQuery(Loader.java:724) 在 org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) 在 org.hibernate.loader.Loader.doList(裝載機的.java:2228) 在 org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125) 在 org.hibernate.loader.Loader.list(Loader.java:2120) 在 org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401) 在 org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:361) 在 org.hibernate.engine.query .HQLQueryPlan.performList(HQLQueryPlan.java:196) 在 org.hibernate.impl.SessionImpl.list(SessionImpl.java:1148) 在 org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) 在 org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:67) ...... 23多個
它發生的joine的一個時d列有空值。
@JoinColumn(name = "PayDescriptor")
@ManyToOne(cascade = CascadeType.ALL)
private GasTradeDescriptor tradePriceDescriptor;
問題是我們想要忽略加入列具有空值並希望繼續加載其餘非空值的值。對於空值,我們只想記錄消息。我們不確定解決這個問題的最佳方法。任何有關最佳方法的想法或建議都將非常感謝。
非常感謝提前。
Rab
請問您可以粘貼「PayDescriptor」字段註釋。 –
重複斯蒂維有點兒,這個班是抽象的嗎? – Jim
感謝您的回覆。 Rab和我在同一個團隊工作。讓我澄清一點:他的意圖是繼續加載所有行,即使一行有一個錯誤是這種情況。我們儘可能控制數據的完整性,但有成千上萬的行。由於這個和其他原因,一行有錯誤的機率很高。我認爲休眠有一個機制來委託單行錯誤處理並繼續?有任何想法嗎? – 2011-06-23 16:11:14