Jer*_*nce 11 sql hibernate hql
我有这张桌子:
table name : Account
Fields : id (varchar), name(varchar), other fields...
Run Code Online (Sandbox Code Playgroud)
我想用hibernate机制查询这个表(使用第二个缓存级别).hibernate查询的结果必须是哈希映射,其中键是字段id,值是字段名称.
如何用HQL编写它?
如果我使用map,我只能使用别名,如果我使用带有对象的构造函数,我必须将结果转换为hashmap,这非常耗时.
Example :
Id | name | other fields
1 Jerome ...
2 Steve ...
3 Nick ...
Run Code Online (Sandbox Code Playgroud)
查询的结果必须是一个hashmap:
1>Jerome
2>Steve
3>Nick
Run Code Online (Sandbox Code Playgroud)
谢谢
tbr*_*aun 13
这个问题很老,但这可能仍然有助于其他人.您现在可以使用HQL返回带有hibernate的映射.使用这样的东西:
select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n ) from Cat cat
Run Code Online (Sandbox Code Playgroud)
来自hibernate docs:http: //docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-select
我认为你最接近的是使用这个查询:
select id, name from Account
Run Code Online (Sandbox Code Playgroud)
它会给你一个两个长度数组的结果集.您必须手动构建地图,如下所示:
for(Object[] row : rs) {
map.put(row[0], row[1]);
}
Run Code Online (Sandbox Code Playgroud)
请注意,这将在很大程度上忽略二级缓存并转换为SQL查询.
| 归档时间: |
|
| 查看次数: |
33559 次 |
| 最近记录: |