Hibernate query.getResultList()异常

时间:2011-06-22 20:30:44

标签: java 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.getResultList(QueryImpl.java:76)     在   com.pse.lib.db.dao.GenericDao.findAll(GenericDao.java:68)     在   com.pse.lib.db.logic.GenericManager.findAll(GenericManager.java:75)     在   com.pse.lib.db.logic.GenericManager.findAll(GenericManager.java:86)     在   sun.reflect.NativeMethodAccessorImpl.invoke0(母语   方法)at   sun.reflect.NativeMethodAccessorImpl.invoke(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)     在   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)     在   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(AsynchronousOperation.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)     在   org.hibernate.impl.SessionImpl.instantiate(SessionImpl.java:1291)     在   org.hibernate.loader.Loader.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(Loader.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个

当其中一个连接列具有空值时会发生。

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

问题是我们要忽略连接列具有空值的值,并希望继续加载剩余的非空值。对于null值,我们只想记录消息。我们不确定解决这个问题的最佳方法。任何关于最佳方法的想法或建议都将受到高度赞赏。

非常感谢提前。

拉​​布

1 个答案:

答案 0 :(得分:1)

如异常所述,您无法实例化抽象类。您没有包含AbstractGasTrade的代码,但该名称确实暗示它实际上是抽象的。

您需要为其中一个具体子项创建查询。