当前位置: 首页 > 面试题库 >

与休眠中的其他字段一起计数

越雨泽
2023-03-14
问题内容

我想用hibernate返回一组中其他字段的行 ,而我的实体类中没有任何字段代表计数。例如我有一个付款实体类:

class Payment
{
    private Long id;
    private String totalCode;
    private String activityCode;
    private Long amount;

    // other fields and setter/getters
}

sql查询:

select count(*), sum(p.amount), p.total_code, p.activity_code 
from  tb_payment p
group by p.total_code,p.activity_code

和我的hibernate标准:

Session session = getCurrentSession();
ProjectionList projectionList = Projections.projectionList();        
projectionList.add(Projections.groupProperty("totalCode"))
        .add(Projections.groupProperty("activityCode"))
        .add(Projections.sum("amount"))
        .add(Projections.count("id"));
Criteria criteria  = session.createCriteria(Payment.class);
criteria.setProjection(projectionList);
List<Payment> payments = criteria.list();

如我所说,我的问题是我不知道在哪里/如何访问count的值(来自criteria.list())!


问题答案:

我认为这是您代码的正确版本:

Session session = getCurrentSession();
ProjectionList projectionList = Projections.projectionList();        
projectionList.add(Projections.groupProperty("totalCode"))
        .add(Projections.groupProperty("activityCode"))
        .add(Projections.sum("amount"))
        .add(Projections.rowCount());
Criteria criteria  = session.createCriteria(Payment.class);
criteria.setProjection(projectionList);
List<Object[]> payments = criteria.list();
for (Object[] payment : payments) {
    System.out.println("totalCode: " + payment[0]);
    System.out.println("activityCode: " + payment[1]);
    System.out.println("amountSum: " + payment[2]);
    System.out.println("rowCount: " + payment[3]);
}


 类似资料:
  • 问题内容: 我有一个二和一的表格。我必须将其发送到服务器,但是将文件与文本连接时遇到一些问题。服务器希望得到以下答案: 这是 html : 这是 控制器 : 这是 指令文件模型 : 这就是 服务 ,其调用服务器: 如果尝试发送,则会收到错误400,响应为:。请求的有效负载为: 问题答案: 不要序列与荷兰国际集团服务器。做这个: 然后使用它:

  • 问题内容: 我有两个实体,消息和用户。用户与消息有一个ManyToMany关系(一个用户可以有多个消息),而消息(现在,为了使其不那么复杂)与用户有一个ManyToMany关系(可以将一条消息发送给多个用户)。 我正在使用@JoinTable加入这两个实体,但是,我想在连接表中添加一个“状态”列,以告知该消息是否是新消息,已读消息等。我当时正在考虑将该列放入Message实体中,但是,我认为这可能

  • 问题内容: 我想在其中自动创建的ManyToMany联接表中存储一些其他信息。我将如何在Django中做到这一点? 就我而言,我有两个表:“雇员”和“项目”。我要存储的是每个项目中每个员工每小时工作所获得的收入,因为这些价值并不相同。那么,我该怎么做呢? 我想到的是,不是使用方法“ ManyToManyField”,而是显式创建了一个第三类/表来存储这些新信息,并使用“ ForeignKey”方法

  • 问题内容: 我有一个相当复杂的数据库结构,正在尝试进行审核。目前,我正在运行Envers,并且它审核对每个对象所做的更改。这真的很好! 我现在想在用户界面上显示一些审核信息。对象/表变得非常复杂,因此我正在寻找一种方法来查看审核中哪些字段已更改。当前存储每个带有修订ID的对象的快照。我可以查看每个对象的修订版本,然后手动查询以查看发生了什么更改,但是我想知道是否有一种方法可以存储哪些字段已更改。这

  • 问题内容: 我在设置字符串类型时遇到麻烦,就像 而且它没有用,我检查了mysql模式,它仍然是varchar(255),我也尝试过, 要么 我正在尝试将类型设为TEXT,任何想法将不胜感激! 问题答案: 您说“我检查了mysql模式,它仍然是varchar(255)”-您是否希望Hibernate自动更改数据库?不会的 即使您已经设置,我也不相信Hibernate会改变现有的列定义。 如果要生成新

  • 休眠与唤醒 [HW,ACPI] acpi_sleep={s3_bios,s3_mode,s3_beep,s4_nohwsig,old_ordering,nonvs,sci_force_enable} ACPI休眠选项。 (1)s3_bios和s3_mode与显卡有关。计算机从S3状态(挂起到内存)恢复时,硬件需要被正确的初始化。这对大多数硬件都不是问题,但因为显 卡是由BIOS初始化的,内核无法获