有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    即使有这样一个特性,Hibernate如何决定哪个是映射键以及映射值中的哪些列

    最灵活的解决方案是定义一个DTO,用于保存选定的投影:

    select new my.package.DTO(field1, field2, .., fieldn) from ...
    

    您只需将结果传递给custom result transformer,它包含精确的结果集键映射逻辑