sql – JPQL构造函数表达式,如何在’select new’中急切地获取主实体

前端之家收集整理的这篇文章主要介绍了sql – JPQL构造函数表达式,如何在’select new’中急切地获取主实体前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的原始查询有点复杂,但我要做的是获取实体AlertCondition以及一些其他字段.
  1. + " SELECT new org.rhq.core.domain.alert.composite.AlertConditionEventCategoryComposite " //
  2. + " ( " //
  3. + " ac," //
  4. + " res.id " //
  5. + " ) " //
  6. + " FROM AlertCondition AS ac FETCH ALL PROPERTIES " //
  7. + " JOIN ac.alertDefinition ad " //
  8. + " JOIN ad.resource res " //
  9. + " WHERE " + AlertCondition.RECOVERY_CONDITIONAL_EXPRESSION //
  10. + " AND ( res.agent.id = :agentId OR :agentId IS NULL ) " //
  11. + " AND ad.enabled = TRUE " //
  12. + " AND ad.deleted = FALSE " //
  13. + " AND ac.category = 'EVENT' " //
  14. + "ORDER BY ac.id"),//

问题是Hibernate只选择AlertCondition的ID,所以当访问这个对象时,这最终需要N 1选择,而我只想做1.

根据debug,select只获取ID列:

  1. select alertcondi0_.ID as col_0_0_,alertdefin1_.ID as col_1_0_,resource2_.ID as col_2_0_

我想要回来的是* AlertCondition的所有领域.

我在Hibernate下找不到任何办法. JOIN FETCH在这里也没有真正起作用.

另一种方法是选择表格的每一列,我想避免.

解决方法

你可以通过以下方式告诉hibernate获取广告:
  1. JOIN FETCH ac.alertDefinition ad

猜你在找的MsSQL相关文章