首页 文章

无法通过反射getter获取字段值,并且查询在纯Hibernate中对多列进行求和

提问于
浏览
0

我已经编写了这个查询但是遇到了这个查询的问题 . 我想在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();

Exception

org.hibernate.PropertyAccessException:无法通过组织中的com.caja.creditprocess.hbmfiles.Doi_Master.dni的反射getter获取org.hibernate.property.DirectPropertyAccessor $ DirectGetter.get(DirectPropertyAccessor.java:35)的字段值 . org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3596)中的hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:183)位于org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister . java:3312)org.hibernate.engine.Ferys上的org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:181)或者org.hibernate.type.EntityType.getIdentifier(EntityType)中的org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:218) .java:397)org.hibernate.MoodToOneType.nullSafeSet(ManyToOneType.java:87)org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:38)org.hibernate.loader.hql.QueryLoader . bindParameterValue s(QueryLoader.java:491)位于org.hibernate.loader.Loader.Loader的org.hibernate.loader.Loader.doQuery(Loader.java:673)org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1563)位于org.hibernate.loader上org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)的org.hibernate.loader.Loader.doList(Loader.java:2213)中的.doQueryAndInitializeNonLazyCollections(Loader.java:236) . Loader.list(Loader.java:2099)org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)org位于org.hibernate.impl.QueryImpl.list的org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)中的.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)(QueryImpl.java:79 )at com.caja.creditprocess.daoimpl.EvaluationDAOImpl.getActivoCrtTotal(EvaluationDAOImpl.java:302)at the com.caja.creditprocess.managerimpl.EvaluationManagerImpl.saveActivo(EvaluationManagerImpl.java:278)at sun.reflect.NativeMethodAccessorImp l.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method . java:498)org.springframework.aop.frame上的org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) .ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)的org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) com.sun.proxy上的org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208) . 在sun.r的EvaluationTest.sendActivoDetails(EvaluationTest.java:150)上的$ Proxy28.saveActivo(未知来源) eflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(方法.java:498)org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:47)org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)at org . 在org.springframework.test.context.junit4.statements的org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)中的junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) . 在org.springframework.test.context.junit4.statements.SpringRepeat.evaluate的org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)的RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) SpringRepeat.java:72)在org.springframewor k.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)at org.junit.runners.ParentRunner $ 3.run(ParentRunner.java) :238)atorg.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.jun.TeringRusner $ 2.evaluate(ParentRunner.java:229)org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)org.springframework.test . org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner . )中的org.junit.runners.ParentRunner.run(ParentRunner.java:309)中的context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71) . java:174)org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)at 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 . RemoteGestRunner.runTests(RemoteTestRunner.java:675)位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main的org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) RemoteTestRunner.java:192)由以下引起:java.lang.IllegalArgumentException:无法在sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException中将java.lang.String字段com.caja.creditprocess.hbmfiles.Doi_Master.dni设置为java.lang.String(位于sun.reflect.UnsafeFieldAccessorImpl.Imp.Obj(UnsafeFieldAccessorImpl.java:58)的sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36)上的UnsafeFieldAccessorImpl.java:167) )atg.hibernate.property.DirectPropertyAccessor的java.lang.reflect.Field.get(Field.java:393)$ DirectGetter.get(DirectPropertyAccessor.java:32)... 62更多

My Entities are

@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
}

1 回答

  • 1

    最后我找到了我的问题的答案 . 在我的查询中我添加了dni,但是hibernate令人困惑地采取了哪个dni . 我刚刚将 private Doi_Master dni; 更改为 private Doi_Master xyz; 所以它对我有用 . 谢谢你的帮助....

相关问题