当前位置: 首页 > 知识库问答 >
问题:

在纯Hibernate中,无法通过反射getter和查询获取字段值以求多列之和

阳昊
2023-03-14

我已经写了这个查询,但是这个查询有问题。我想在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();

例外情况:

我的实体是

  @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

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

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

//setters and getters
}

共有1个答案

章青青
2023-03-14

我终于找到了问题的答案。在我的查询中,我添加了dni,但hibernate很难获得哪一个dni。我刚刚将private Doi_Master dni;更改为private Doi_Master xyz;,因此它对我起作用。谢谢帮助....

 类似资料:
  • 问题内容: 我在JPA中更新对象时遇到问题 我有豆子用户 和 当尝试更新时给我异常:当表评级包含行时,无法通过反射获得字段值 错误TransactionInterceptor:434-应用程序异常被提交异常com.vodafone.visradio.dataaccess.exception.DataAccessException覆盖:org.hibernate.PropertyAccessExce

  • 问题内容: 我有以下实体: 还有以下EJB: 调用persist时,将引发具有以下根本原因的异常: 这是GlassFish 4.1的完整日志: 这是怎么引起的,我该如何解决? 问题答案: 我有同样的问题。这个错误似乎是从HB 4.3.6开始的,并且一直存在,我正在尝试4.3.10。具有相同的结果。 在我看来,访问实体字段的方式在HB 4.3.6+中已更改,可能与类加载器有关。在HB 4.3.6之前

  • 我有一个方法,它返回字符串类型的字段对象列表。 这个方法应该将所有字符串字段都大写: 问题是:"field.set(...)"不起作用。它应该将值大写并将其设置为该字段的新值,但它不起作用...我如何解决这个问题的任何想法?(PS:在真正的代码中,"something Class.class"被设置为真正的类名...) 正在生成的错误是field.get(this)方法(insdefield.se

  • 问题内容: 我试图通过反射接收字段值。问题是我不知道字段类型,必须在获取值时确定它。 这段代码会导致以下异常: 无法将java.lang.String字段com .... fieldName设置为java.lang.String 我尝试进行转换,但出现编译错误: 要么 我怎样才能做到这一点? 问题答案: 像之前回答的那样,你应该使用: 有时更喜欢的另一种方法是动态调用getter。示例代码: 还应

  • 问题内容: 我有一个方法: 当运行时,我得到如下输出: 现在我该怎样提取实际字符串值入, 使用反射? 问题答案: 看起来您需要引用该类的实例。您可能要调用get和pass的引用,将返回值转换为String。 您可以使用get,如下所示: