【发布时间】:2017-09-02 00:55:35
【问题描述】:
假设我有 2 个实体和那个查询:
select p, n.name
from ProductOffering p
left join ProductOfferingName n on (n.productOfferingId = p.productOfferingId and n.salesChannelId= :salesChannelId)
Hibernate 将使用 p 中的所有列和 n 中的名称列发出 sql 查询,并返回我 Object[]。 但是处理 Object[] 不是类型安全的,所以我会尝试使用“构造函数表达式”:
select new com.peterservice.ccm.pom.internal.api.model.ProductOfferingResult(p, n.name)
from ProductOffering p
left join ProductOfferingName n on (n.productOfferingId = p.productOfferingId and n.salesChannelId= :salesChannelId)
使用该查询 Hibernate 仅选择 p.id + n.name 并为每一行发出“select * from ProductOffering p where p.id = :id”(n + 1 个问题)
这种行为是否正常且符合预期?
【问题讨论】: