java有没有办法让hibernate查询自动返回键值映射(省略“as”)?
由于Mysql中存储的数据总是有一个列名,所以我认为如果有一种方法可以检索键值映射中的记录,那就太好了
用于连接查询的Hibernate机制帮不了什么忙,因为我们只能检索Object[]
结果并自己反序列化结果,或者我们可以使用this:
This is most useful when used together with select new map:
select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n ) from Cat cat
上面的查询提供了一种检索映射的方法,但是我们必须定义映射的键(使用as
),我认为这只是一种逐案解决方案,硬编码字段名不是很优雅
我们找到一种只使用列名自动定义检索到的映射的key
的方法不是更好、更通用吗?那么,我们可以发送一个包含所有字段的地图,让应用程序选择使用哪个字段吗
# 1 楼答案
即使有这样一个特性,Hibernate如何决定哪个是映射键以及映射值中的哪些列
最灵活的解决方案是定义一个DTO,用于保存选定的投影:
您只需将结果传递给custom result transformer,它包含精确的结果集键映射逻辑