【问题标题】:Join multiple tables in HQL在 HQL 中连接多个表
【发布时间】:2014-01-12 13:10:38
【问题描述】:

谁能帮我把这个查询转换成 HQL

SELECT      
  supplierOrderDetails.productID,
  supplierOrderDetails.orderQty,
  supplierOrderReceiveDetail.qtyArrived
FROM
 supplierOrder
INNER JOIN
  supplierOrderDetails
ON
  (supplierOrderDetails.supplierOrderID = supplierOrder.ID)
INNER JOIN 
    supplierOrderReceive
ON  
 (supplierOrderReceive.supplierOrderID = supplierOrder.ID)
INNER JOIN 
    supplierOrderReceiveDetail
ON  
 (supplierOrderReceiveDetail.supplierOrderReceiveID = supplierOrderReceive.ID)  
   AND 
 (supplierOrderReceiveDetail.ProductID =supplierOrderDetails.ProductID)     
WHERE supplierOrder.ID = 1

这是表关系

【问题讨论】:

  • 你得到了什么错误/堆栈跟踪?或者还有什么问题?需要更多信息才能提供好的答案。
  • 我不知道如何开始...我是 HQL 新手...我正在尝试搜索互联网但找不到任何东西...所以最后希望是发布我的问题这里
  • 您找不到任何关于 HQL 的教程或示例?
  • 有很多教程,但我找不到如何在 HQL 中加入这样的 sql
  • @ZAJ 你找到解决方案了吗?

标签: hibernate hql


【解决方案1】:

我已经为那些想知道如何在 HQL 中加入多个表的人添加了查询

SELECT supplierOrderDetails.productID as product, supplierOrderDetails.orderQty as orderedQty,sum(supplierOrderReceiveDetail.qtyArrived) as qtyArrived 

FROM SupplierOrder as so, SupplierOrderDetails as supplierOrderDetails,  SupplierOrderReceiveDetail as supplierOrderReceiveDetail, SupplierOrderReceive as supplierOrderReceive

INNER JOIN supplierOrderDetails.supplierOrderID

INNER JOIN supplierOrderReceive.supplierOrder

INNER JOIN supplierOrderReceiveDetail.supplierOrderReceive

GROUP BY supplierOrderDetails.productID, supplierOrderDetails.orderQty

【讨论】:

    【解决方案2】:

    HQL 使用您映射的Entities 并返回Entities。因此,根据您的休眠 (JPA) 映射,您想要的 HQL 可能很简单:

    来自供应商订单,其中 id = 1

    • SupplierOrder 是映射实体的类名
    • id 是您的 SupplierOrder 中的属性名称(实例变量) 类
    • 我假设所有其他实体映射到 SupplierOrder 类是树层次结构中最高的。

    【讨论】:

    • 你能不能先帮我写这个总部
    • 如果不完全了解您的实体映射,这是不可能的。
    • 我已经添加了表关系
    • 这可能与您的实体映射不完全相同。带有注释的休眠映射:@Entity @Id @Column.
    • 这里是hbm文件的链接dropbox.com/sh/fmozk0h431b4xbu/vke4rTbd21
    【解决方案3】:

    这个链接很适合开始学习如何通过 HQL 加入实体。

    HQL Join Reference

    编辑:
    要让 hibernate 加入实体,您必须已定义实体之间的关联/映射。
    Hibernate 使用在您的 Hibernate 映射文件中定义的关系名称。

    【讨论】:

    • 我设法编写了 HQL 查询并加入了 3 个表,但我无法将最后一个表添加到此加入供应商OrderDetails。你能帮我吗from SupplierOrderReceiveDetail sord join sord.supplierOrderReceive sor join sor.supplierOrder so
    • 链接已损坏。
    猜你喜欢
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2012-07-17
    • 1970-01-01
    相关资源
    最近更新 更多