Hibernate HQL构造函数表达式

时间:2017-04-06 19:51:20

标签: hibernate hql

想象一下,我有2个实体和那个查询:

select p, n.name
  from ProductOffering p
  left join ProductOfferingName n on (n.productOfferingId =     p.productOfferingId and n.salesChannelId= :salesChannelId)

Hibernate将发出sql查询,其中包含来自n的p和name列的所有列,并返回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其中p.id =:id" (n + 1问题)

这种行为是正常的还是预期的?

1 个答案:

答案 0 :(得分:0)

Try to change to "left join fetch":

select new com.peterservice.ccm.pom.internal.api.model.ProductOfferingResult(p, n.name)
  from ProductOffering p
  left join fetch ProductOfferingName n on (n.productOfferingId = p.productOfferingId and n.salesChannelId= :salesChannelId)