2016-08-12 3 views
0

Я написал этот запрос, но возникли проблемы с этим запросом. , и я хочу написать этот запрос в Hibernate.не смог получить значение поля путем отражения getter и запроса для суммирования нескольких столбцов в чистом Hibernate

Query getActivoCrtTotalquery = (Query) session 
       .createQuery("select sum(a.servicios_por_pagares)+sum(a.producto_en_processo)+sum(a.materia_prima)+sum(a.moteriales)+sum(a.marcaderia_en_transito)+sum(a.mercaderia)+sum(a.productos_terminado) from Activocrt_Master a where a.dni=:dni"); 

     getActivoCrtTotalquery.setParameter("dni", dni); 
       List list = getActivoCrtTotalquery.list(); 
      result = (double) list.get(0); 
      session.close(); 

Исключение:

org.hibernate.PropertyAccessException: не мог получить значение поля путем отражения геттер из com.caja.creditprocess.hbmfiles.Doi_Master.dni на орг. hibernate.property.DirectPropertyAccessor $ DirectGetter.get (DirectPropertyAccessor.java:35) at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier (AbstractEntityTuplizer.java:183) at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier (AbstractEntityPersister.java:3596) на org.hibernate.persister.entity.AbstractEntityPersister.isTransient (AbstractEntityPersister.java:3312) в org.hibernate.engine.ForeignKeys. isTransient (ForeignKeys.java:181) на org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved (ForeignKeys.java:218) в org.hibernate.type.EntityType.getIdentifier (EntityType.java:397) в орг. hibernate.type.ManyToOneType.nullSafeSet (ManyToOneType.java:87) по адресу org.hibernate.param.NamedParameterSpecification.bind (NamedParameterSpecification.java:38) at org.hibernate.loader.hql.QueryLoader.bindParameterValues ​​(QueryLoader.java:491) на org.hibernate.loader.Loader.prepareQueryStatement (Loader.java:1563) в org.hibernate.loader.Loader.doQuery (Loader.java:673) на org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections (Loader.java:236) на org.hibernate.loader.Loader.doList (Loader.java:2213) на org.hibernate.loader. Loader.listIgnoreQueryCache (Loader.java:2104) на org.hibernate.loader.Loader.list (Loader.java:2099) на org.hibernate.loader.hql.QueryLoader.list (QueryLoader.java:378) на org.hibernate.hql.ast.QueryTranslatorImpl.list (QueryTranslatorImpl.java:338) по адресу org.hibernate.engine.query.HQLQueryPlan.performList (HQLQueryPlan.java:172) at org.hibernate.impl.SessionImpl.list (SessionImpl.java:1121) в org.hibernate.impl.QueryImpl.list (QueryImpl .java: 79) при com.caja.creditprocess.daoimpl.EvaluationDAOImpl.getActivoCrtTotal (EvaluationDAOImpl.java:302) на com.caja.creditprocess.managerimpl.EvaluationManagerImpl.saveActivo (EvaluationManagerImpl.java:278) на солнце. reflect.NativeMethodAccessorImpl.invoke0 (Родной метод) при sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) на sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect. Method.invoke (Metho d.java:498) при org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection (AopUtils.java:302) на org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint (ReflectiveMethodInvocation.java:190) в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke (TransactionInterceptor.Java: 110) на org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:179) на org.springframework.aop.framework.JdkDynamicAopProxy.invoke (JdkDynamicAopProxy.java:208) на ком. sun.proxy. $ Proxy28.saveActivo (Unknown Source) на EvaluationTest.sendActivoDetails (EvaluationTest.java:150) в sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java : 62) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) по адресу java.lang.reflect.Method.invoke (Method.java:498) в org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall (FrameworkMethod.java:47) на org.junit.internal.runners.model.ReflectiveCallable.run (ReflectiveCallable.java:12) в org.junit. runners.model.FrameworkMethod.invokeExplosively (FrameworkMethod.java:44) на org.junit.internal.runners.statements.InvokeMethod.evaluate (InvokeMethod.java:17) на org.springframework.test.context.junit4. statements.RunBeforeTestMethodCallbacks.evaluate (RunBeforeTestMethodCallbacks.java:74) на org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate (RunAfterTestMethodCallbacks.java:83) на или g.springframework.test.context.junit4.statements.SpringRepeat.evaluate (SpringRepeat.java:72) на org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild (SpringJUnit4ClassRunner.java:231) в орг. junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner $ 3.run (ParentRunner.java:238) в org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java: 63) в org.junit.runners.ParentRunner.runChildren (ParentRunner.java:236) в org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:53) в org.junit.runners.ParentRunner $ 2. оценить (ParentRunner.java:229) по адресу org.springframework.test.context.junit4.statements. RunBeforeTestClassCallbacks.evaluate (RunBeforeTestClassCallbacks.java:61) на org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate (RunAfterTestClassCallbacks.java:71) на org.junit.runners.ParentRunner.run (ParentRunner.java : 309) на org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run (SpringJUnit4ClassRunner.java:174) на org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run (JUnit4TestReference.java:50) на org.eclipse.jdt.internal.junit.runner.TestExecution.run (TestExecution.java:38) на org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:459) на org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:675) на org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run (RemoteTestRunner.java:382) на org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main (RemoteTestRunner.java:192) Вызвано: java.lang.IllegalArgumentException: Не удается установить java.lang.String поле com.caja.creditprocess.hbmfiles .Doi_Master.dni к java.lang.String на sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException (UnsafeFieldAccessorImpl.java:167) на sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException (UnsafeFieldAccessorImpl.Java: 171) на sun.reflect.UnsafeFieldAccessorImpl.ensureObj (UnsafeFieldAccessorImpl.java:58) на sun.reflect.UnsafeObjectFieldAccessorImpl.get (UnsafeObjectFieldAccessorImpl.java:36) в java.lang.reflect.Field.get (Field.java:393) в org.hibernate.property.DirectPropertyAccessor $ DirectGetter.get (DirectPropertyAccessor.java:32) ... 62 больше

Мои Сущности

@Entity 
@Table(name="Activocrt_Master") 
public class Activocrt_Master implements Serializable{ 

    @Id 
    @Column(name="activocrt_master_id") 
    private String activocrt_master_id; 

    @OneToOne(cascade = CascadeType.ALL) 
    @JoinColumn(name="dni") 
    private Doi_Master dni; 


    @Column(name="servicios_por_pagares") 
    private double servicios_por_pagares; 

    @Column(name="producto_en_processo") 
    private double producto_en_processo; 

    @Column(name="materia_prima") 
    private double materia_prima; 

    @Column(name="moteriales") 
    private double moteriales; 

    @Column(name="marcaderia_en_transito") 
    private double marcaderia_en_transito; 

    @Column(name="mercaderia") 
    private double mercaderia; 

    @Column(name="productos_terminado") 
    private double productos_terminado; 

//setters and getters 

} 

Doi_Master.java

@Entity 
@Table(name="Doi_Master") 
public class Doi_Master implements Serializable{ 

    @Id 
    @Column(name="dni") 
    private String dni; 

//setters and getters 
} 
+0

Какая проблема? Добавить дополнительную информацию, исключение, может быть? –

+0

Я думаю, что это не запрос Hibernate, это обычный запрос jdbc с этим я получаю такой вид Exception –

+0

Каково имя поля класса, который вы хотите заполнить? Вам не нужно выбрать column_1 как field_name из таблицы where column_2 =: dni. Весна использует отражение, поэтому вы должны указывать правильные имена. И в вашем классе вам нужен getter getDni и setter setColumn_1. поэтому ошибка не может получить значение поля путем отражения getter из com.caja.creditprocess.hbmfiles.Doi_Master.dni. – Deceiver

ответ

1

Наконец я нашел ответ на мой вопрос. В моем запросе я добавил dni, но спящий режим сбивает с толку, какой dni. я только что изменил private Doi_Master dni; до private Doi_Master xyz;, так что это сработало для меня. Спасибо за помощь ....