java - POJO 不相关或不可用时的 HQL 查询

标签 java hibernate orm hql hibernate-mapping

我正在尝试执行以下 HQL 查询:

 select count(*) , od.itemSubtype.name from OrderDetails od inner join od.itemSubtype where od.employee = 1 group by od.itemSubtype

我的 POJO 是:

 OrderDetails 
 -------------
 private Integer id;
 private Employee employee;
 private Order order;
 private ItemSubtype itemSubtype;
 private Integer quantity;
 private String imageStyle;
 private String imageCapture;
 private Date workStartedOn;
 private Date workFinishedOn;


 ItemSubtype 
 -----------     
 private Integer id;
 private ItemType itemType;
 private String name;
 private Set orderDetailses = new HashSet(0);
 private Set measuresBooks = new HashSet(0);

由于查询无法转换现有的 Pojo,因此我无法检索结果。我怎样才能执行这个查询?我需要写一个新的Pojo吗?另外我如何从迭代中获取数据?

      Query query = session.createQuery(hql);

       // query.setParameter("employee_id", employee_id);

        Iterator i = query.iterate();
         while (i.hasNext()) {
            Object obj = i.next();
           // how to retrive values from this obj??
         }

最佳答案

这是获取结果的方法:

Query query = session.createQuery("""
    select 
        count(ist.id), 
        ist.name 
    from OrderDetails od 
    inner join od.itemSubtype ist 
    where od.employee = 1 
    group by ist.name
    """
);

for(Object rows : query.list()){
    Object[] row = (Object[]) rows;
    Number count = (Number) row[0];
    String itemSubTypeName = (String) row[1];
}

关于java - POJO 不相关或不可用时的 HQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24598036/

相关文章:

mysql - 是否可以在 Java 代码中实现数据库 'trigger'? (hibernate + jpa + spring + mysql)

python - Django 结合 __unaccent 和 __search 查询

java - Hibernate @ManyToOne 映射 - 无需设置 @Id 属性即可自动加载

java - Hibernate 中的半正矢公式 - Spring

Java Collections.binarySearch() 返回 null

hibernate - JPA:如何从多个表的列组合实体(不将实体保存到多个表)

orm - Eloquent 关系过滤

java - 如何根据 Avro 模式验证 JSON

java - 深拷贝/克隆派生类到基类

mysql - 如何在 hibernate 中限制小数精度