【发布时间】:2010-05-18 19:48:06
【问题描述】:
有没有人想出一个聪明的方法来通过类似的机制来进行查询结果转换,比如在 Hibernate 中指定 ResultTransformer?
我能想到的只是在查询返回后转换每个结果行。有没有其他办法?
对于构造函数投影(例如 new DTO(arg1, arg2))可以在 JPQL 查询中定义,但其他情况呢?
我的用例如下:
我正在为Querydsl 开发一个custom Tuple projection,但我还不能让它与JPA 一起正常工作。构造函数投影很困难,因为我还需要提供查询表达式,而不仅仅是结果值。
一般而言,其他用例也可以是 JavaBean 填充(公共空构造调用和基于 setter 的填充),使用工厂方法创建对象等。
【问题讨论】:
-
您是指原生查询吗?另外,为什么“至少对于 Hibernate”? select 子句中的构造函数表达式是标准 JPQL。
-
我更正了构造函数表达式部分,不,我不是指原生查询,而是 JPQL 查询。
-
当然是我,但我不明白其他情况是什么。你有一个例子吗?
-
我会再考虑一下,但这显然超出了标准 JPA。
-
是的,我想我正在寻找的可能是一个 hack。虽然我相信这种需求并不少见。