【问题标题】:hibernate left join with multiple where conditions具有多个 where 条件的休眠左连接
【发布时间】:2013-12-03 09:13:39
【问题描述】:

------我正在编写 sql 查询它的工作正常------

SELECT SUM (lb.QUANTITY*mp.DB_PRICE) 
FROM ledger_balance lb 
LEFT JOIN material_price mp ON (mp.MATERIAL_ID = lb.MATERIAL_ID) 
WHERE lb.QTY_TYPE ='G' 
AND lb.BALANCE_TYPE='CUMU' 
AND lb.CUSTOMER_ID = 13
AND mp.CUSTOMER_ID = 13 AND  lb.MATERIAL_ID IN (226, 230, 362, 365)
AND mp.MATERIAL_ID IN (226, 230, 362, 365);

--- 休眠查询它不工作 ------

SELECT SUM (B.quantity*P.dbPrice) 
FROM com.efl.efms.data.domain.common.LedgerBalance as B 
LEFT JOIN com.efl.efms.data.domain.material.MaterialPrice as P   
with (B.materialId = P.materialCatalog.materialId)  
WHERE   B.balanceType=:balanceType 
AND B.qtyType=:qtyType and B.customerId in (:customerId) AND P.customer.customerId IN (:customerId)  
AND B.materialId in (:materialPriceId)  
AND P.materialCatalog.materialId in (:materialPriceId) ;

请帮我休眠左连接,我在左连接时遇到以下错误 hibernate java.lang.illegalstateexception 没有左侧的点节点

【问题讨论】:

    标签: java sql hibernate hql


    【解决方案1】:

    您不能使用 Hibernate 加入非映射关系。

    如果您的查询仅返回非结构化数据(在您的情况下为数字),我倾向于使用本机查询。

    • 您不必浪费时间将查询转换为 HQL
    • 它运行得更快,因为 Hibernate 的所有翻译过程都可以 省略

    【讨论】:

    • 您应该发布一个代码示例来说明如何解决这个问题,以使您的答案更加完整。不过帮了我很多,+1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2014-09-24
    • 2012-12-22
    • 2015-02-06
    • 2021-09-12
    • 1970-01-01
    • 2019-01-15
    相关资源
    最近更新 更多