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;
Проблема состоит в том, что мы хотим игнорировать значения, для которых объединенный столбец имеет нулевые значения, и хотим продолжить загрузку оставшихся ненулевых значений.Для нулевых значений мы просто хотим записать сообщение.Мы не уверены в наилучшем подходе к решению этой проблемы.Любая идея или предложение о лучшем подходе будет высоко ценится.
Большое спасибо заранее.
Раб