Hibernate query.getResultList () исключение - PullRequest
0 голосов
/ 23 июня 2011

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 (Native Метод) в 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.Session.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;

Проблема состоит в том, что мы хотим игнорировать значения, для которых объединенный столбец имеет нулевые значения, и хотим продолжить загрузку оставшихся ненулевых значений.Для нулевых значений мы просто хотим записать сообщение.Мы не уверены в наилучшем подходе к решению этой проблемы.Любая идея или предложение о лучшем подходе будет высоко ценится.

Большое спасибо заранее.

Раб

1 Ответ

1 голос
/ 23 июня 2011

Как говорится в исключении, вы не можете создать экземпляр абстрактного класса. Вы не включили код для AbstractGasTrade, но название наверняка намекает на то, что оно на самом деле абстрактно.

Вам нужно создать запрос для одного из его конкретных потомков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...