【问题标题】:Hibernate Native SQL QueryHibernate 原生 SQL 查询
【发布时间】:2013-01-09 12:15:46
【问题描述】:

我的 Native SQL 语句是这样的:

SQL查询:

select Name ,Id,COUNT(ID) from Employee;

员工 HBM 文件:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="edu.model.Master" table="test_prefixmaster">
        <id name="empcode" column="EMPCODE" length="10" ></id>

        <property name="empname">
            <column name="NAME" length="30" />
        </property>
    </class>
    <sql-query name="SQLQuery" callable="true">
    <return alias="emp" class="edu.model.Employee">
        <return-property name="empid" column="EMPID" />
        <return-property name="empname" column="EMPNAME" />
        </return>
        </sql-query>
</hibernate-mapping>

在 MyTest 类中:

   Query query = session.getNamedQuery("SQLQuery");
    List emp=new ArrayList();
    for (int i = 0; i < emp.size(); i++) {                  
    Employee emp = (Employee) emp.get(i);
    System.out.println("Employee Id:::" + emp.getEmpId());
   System.out.println("Employee Name:::" + emp.getEmpname());
//I want to get here System.out.println("Employee Count");
}

如何在循环中映射和打印员工人数?

【问题讨论】:

    标签: java spring hibernate


    【解决方案1】:
       Query query = session.getNamedQuery("SQLQuery");
        List empList=new ArrayList();
        for (int i = 0; i < empList.size(); i++) {                  
        Employee emp = (Employee) empList.get(i);
        System.out.println("Employee Code:::" + emp.getEmpcode());
       System.out.println("Employee Name:::" + emp.getEmpname());
    
    //I want to get here System.out.println("Employee Count");
       System.out.println("Employee Count:::" + empList.size());
    }
    

    针对不同的员工

    更改您的查询

    select Name ,distinct (Id) from Employee ;
    

    【讨论】:

    • 在我的查询中,员工 ID 将被重复,我想找到特定员工的计数?
    • 我在这里展示了一个简单的查询,但是我的查询如果我在 MySQL 命令提示符下执行,它会返回一个 Particula Employee 的计数?我想用 Hibernate 运行相同的查询吗?
    • 你可以在这里找到我的查询:stackoverflow.com/questions/14212488/…你的答案将返回所有列表大小,但这不是实际要求
    • 如何将它放入我的 Employee Model 类,如何通过 emp 引用引用(emp.getEmpCode 等...) distict(Id)?
    • 仅在 id 列上添加了不同的类,它仍然会引用模型类中的 id 列。问题是它会返回 Unique Emplooye 对象,然后我们在 List 上调用 size。
    【解决方案2】:

    您选择的最佳答案符合您的目的。但是,如果您想要查询中的 ID 计数,则需要在实体类中添加另一个属性作为 empIdCount 并将计数值映射到它。这将满足您的目的。您可以直接获取 EmpIds 的计数。

    【讨论】:

      猜你喜欢
      • 2014-07-15
      • 2016-10-11
      • 2011-08-28
      • 2021-10-12
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      • 2012-07-15
      • 2015-07-15
      相关资源
      最近更新 更多