【问题标题】:Mistake in HQL query while creating reports through hibernate projection通过休眠投影创建报表时出现HQL查询错误
【发布时间】:2014-11-04 03:18:35
【问题描述】:

我的以下查询工作正常,但后来我不得不将其转换为休眠投影以解决性能问题。

NamedQuery = " SELECT o FROM OrderJob o "

被转换为:-

String hqlQuery = "select " 
        + "new JobAuditListVO( o.jobDate, o.jobType, customer.name, job.street, payment.description, p.paid,o.invoice) " 
        + " from OrderJob o   " 
        + " join  o.order ordr "
        + " join ordr.customer customer "
        + " join  o.jobAddress job "
        + " join o.payment p"
        + " join p.paymentReceivedMethod payment";
getEntityManager().createQuery(hqlQuery).getResultList();

但列表返回 0 个结果。而名称查询返回 2 个结果。

【问题讨论】:

  • 如果您可以根据需要包含 OrderJob 的结构(可能还有 JobAuditListVO 和 Customer)来检查查询是否在语法上实际上应该是等效的,这将非常有帮助...

标签: java hibernate jakarta-ee jpa jpa-2.0


【解决方案1】:

我已经得到了答案。这两个查询是绝对等价的。 问题是我必须使用左连接而不是简单连接。因为某些实体返回 null。

【讨论】:

  • 专业提示.. 关系中的空值通常表示您的数据库方案在正确映射您的用例时存在问题。应该可以通过normalizing your database 清除空值
猜你喜欢
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-15
相关资源
最近更新 更多