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值,我们只想记录消息。我们不确定解决这个问题的最佳方法。任何关于最佳方法的想法或建议都将受到高度赞赏。
非常感谢提前。
拉布
答案 0 :(得分:1)
如异常所述,您无法实例化抽象类。您没有包含AbstractGasTrade
的代码,但该名称确实暗示它实际上是抽象的。
您需要为其中一个具体子项创建查询。