Hibernate:如何获取命名 SQL 查询结果集作为列表<Map<columnName,Value> 而不是列表<Object[]>
Hibernate : How to get Named SQL Query resultset as List<Map<columnName,Value> instead of List<Object[]>
我在休眠映射文件中写了一个名为 sql 的查询,其中 return 只有来自不同表的几列。
<resultset name="employeeDetails">
<return-scalar type="timestamp" column="joinDate"/>
<return-scalar type="string" column="name"/>
<return-scalar type="string" column="department"/>
<return-scalar type="big_decimal" column="salary"/>
</resultset>
<sql-query name="getEmployeeDetails" resultset-ref="employeeDetails">
<![CDATA[
select ei.joinDate as joinDate, e.name as name, e.depatrment as department, e.salary as salary from Employee as e, Employee_Info as ei where ei.emp_id = e.id
]]>
</sql-query>
当我调用这个查询时。
final Query query = session.getNamedQuery("getEmployeeDetails");
final List<Object[]> list = (List<Object[]>) query.list();
它returns 对象数组列表。有什么方法可以将此结果集设置为以 columnName 为键并将其值设置为 Value 的地图列表。
Query query=session.createSQLQuery(query);
query.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
List<Map<String,Object>> aliasToValueMapList=query.list();
我在休眠映射文件中写了一个名为 sql 的查询,其中 return 只有来自不同表的几列。
<resultset name="employeeDetails">
<return-scalar type="timestamp" column="joinDate"/>
<return-scalar type="string" column="name"/>
<return-scalar type="string" column="department"/>
<return-scalar type="big_decimal" column="salary"/>
</resultset>
<sql-query name="getEmployeeDetails" resultset-ref="employeeDetails">
<![CDATA[
select ei.joinDate as joinDate, e.name as name, e.depatrment as department, e.salary as salary from Employee as e, Employee_Info as ei where ei.emp_id = e.id
]]>
</sql-query>
当我调用这个查询时。
final Query query = session.getNamedQuery("getEmployeeDetails");
final List<Object[]> list = (List<Object[]>) query.list();
它returns 对象数组列表。有什么方法可以将此结果集设置为以 columnName 为键并将其值设置为 Value 的地图列表。
Query query=session.createSQLQuery(query);
query.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
List<Map<String,Object>> aliasToValueMapList=query.list();