Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
hibernate中的列别名?_Hibernate_Hibernate Mapping - Fatal编程技术网

hibernate中的列别名?

hibernate中的列别名?,hibernate,hibernate-mapping,Hibernate,Hibernate Mapping,我有一个具有以下表架构的表: 我创建了一个方法,在执行查询时返回值列表 protected List findAllWithGroupClause(Class clazz) { List objects = null; try { startOperation(); String SQL_QUERY = "SELECT COUNT(serviceName) AS RunningInstances ,serviceName,SUM(nu

我有一个具有以下表架构的表:


我创建了一个方法,在执行查询时返回值列表

    protected List findAllWithGroupClause(Class clazz) {

    List objects = null;
    try {
        startOperation();
        String SQL_QUERY = "SELECT COUNT(serviceName) AS RunningInstances ,serviceName,SUM(numberofthread) as workerThread "
                + "FROM servicemanagerdetails WHERE servicemanagerstatus=:status GROUP BY serviceName";
        Query query = session.createQuery(SQL_QUERY);
        query.setString("status", "Running");
        objects = query.list();
        tx.commit();
    } catch (HibernateException e) {
        handleException(e);
    } finally {
        HibernateFactory.close(session);
    }
    return objects;
}
对于声明的ServiceManagerDetails.hbm.xml文件:

  <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class name="com.arosys.hibernatedatamanager.ServiceManagerDetails" table="servicemanagerdetails">
    <id column="servicedetailsid" name="servicedetailsID" type="integer">
      <generator class="increment"/>
    </id>
    <property column="serviceID" name="servicemanagerID" type="string"/>
    <property column="servicemode" name="servicemode" type="string"/>
    <property column="servicetype" name="servicetype" type="string"/>
    <property column="servicemanagerstatus" name="servicemanagerstatus" type="string"/>
    <property column="controlqueue" name="controlQueue" type="string"/>
    <property column="controlexchange" name="contolExchange" type="string"/>
    <property column="controlroutingkey" name="controlRoutingkey" type="string"/>
  </class>
</hibernate-mapping>

我已经创建了列别名,所以有必要编写setter和getter方法以及定义映射?请解释如何从列表中检索值


感谢您使用select语句选择聚合函数COUNT、SUM等。在本例中,hibernate
Query.list()
返回对象数组的列表

如果你想得到第四行的和,你可以

Object obj4[] = objects.get(3);
long sum4 = ((Number)obj4[2]).longValue();
对于第三行的serviceName,您需要

Object obj3[] = objects.get(2);
String name2 = (String)obj4[2];
(这两个示例都是为了解释;您的代码看起来更可变)

您不需要编写getter和setter,您甚至不能这样做。不能在选择字符串之外使用列别名