2011-06-22 13 views
0

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 at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614) at org.hibernate.ejb.QueryImpl.getRe com.pse.lib.db.logic.GenericManager.findAll(GenericManagerでsultList(QueryImpl.java:76) でcom.pse.lib.db.dao.GenericDao.findAll(GenericDao.java:68) 。 Javaの:75) でcom.pse.lib.db.logic.GenericManager.findAll(GenericManager.java:86) sun.reflect.NativeMethodAccessorImplで sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ 法)で。起動 java.lang.reflect.Method.invoke(Method.java:597)で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)で(NativeMethodAccessorImpl.java:39) org.springframework.aopで org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)で(AopUtils.java:309) で0 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocationで.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) でorg.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) .java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) com.pse.katana.services.possvc.PositionService.handlePositionSubscriptionで$ Proxy29.findAll(不明なソース) でcom.pse.katana.services.possvc.PositionService.createPositionSegment(PositionService.java:180) (でPositionService.java:150) でcom.pse.katana.services.possvc.PositionService.accept(PositionService.java:243) com.pse.katana.messages.PositionSubscriptionRequest.visit(PositionSubscriptionRequest.java:43)で でcom.pse.katana.services.possvc.PositionService.dispatch(PositionService.java:266) com.pse.lib.servicengine.processor.AsynchronousOperation.run(AsynchronousOperatiでon.java:42) java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908) で java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886) で で org.hibernate.InstantiationException: によって引き起こさ java.lang.Thread.run(Thread.java:662) com.pse.lib.trading.energy.naturalgas: は抽象クラスまたは インタフェースをインスタンス化することはできません。 org.hibernate.tuple.entityでorg.hibernate.tuple.PojoInstantiator.instantiate(PojoInstantiator.java:101) でorg.hibernate.tuple.PojoInstantiator.instantiate(PojoInstantiator.java:123) でAbstractGasTrade。 org.hibernate.impl.SessionImpl.instantiate(SessionImpl.java:1302)でAbstractEntityTuplizer.instantiate(AbstractEntityTuplizer.java:374) でorg.hibernate.persister.entity.AbstractEntityPersister.instantiate(AbstractEntityPersister.java:3634) at org.hibernate.impl.SessionImpl.instantiate(SessionImpl.java:1291) at org.hibernate.loader.Loade r.instanceNotYetLoaded org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:603)で org.hibernate.loader.Loader.getRow(Loader.java:1230)で(Loader.java:1323) で org.hibernate.loader.Loader.doQuery org.hibernate.loader.Loader.doListで org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) で(Loader.java:724) (ローダ.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で org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)で.HQLQueryPlan.performList org.hibernate.impl.SessionImpl.list(SessionImpl.java:1148)で(HQLQueryPlan.java:196) joineのとき1 org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:67)より ... 23

でそれが起こりますd列にNULL値があります。

@JoinColumn(name = "PayDescriptor") 
@ManyToOne(cascade = CascadeType.ALL) 
private GasTradeDescriptor tradePriceDescriptor; 

問題は、結合された列がnull値を持ち、残りのnull以外の値のロードを続行したいという値を無視したいということです。 null値の場合、メッセージを記録するだけです。これに取り組むための最良のアプローチについてはわかりません。最良のアプローチについてのアイデアや提案は、非常に高く評価されます。

事前に感謝します。例外状態として

ラブ

+0

"PayDescriptor"フィールドの注釈を貼り付けてください。 –

+0

Steviを少し繰り返すと、このクラスは抽象的ですか? – Jim

+0

ご返信ありがとうございます。ラブと私は同じチームで働いています。私はちょっと明確にしましょう。彼の意図は、1つの行にこの場合のエラーがあっても、すべての行をロードし続けることです。私たちはデータの完全性を最大限にコントロールしますが、何万行もあります。この理由および他の理由により、エラーを有する1つの行の可能性が高い。私は、休止状態には、単一の行のエラー処理を委任し、継続する仕組みがあると思います。何か案は? –

答えて

1

、あなたは抽象クラスをインスタンス化することはできません。 AbstractGasTradeのコードは含まれていませんでしたが、その名前は実際に抽象的であることを確信しています。

具体的な子のいずれかのクエリを作成する必要があります。

関連する問題