hibernate - HQL加入许多子句 [英] hibernate - HQL joins on many clauses

查看:114
本文介绍了hibernate - HQL加入许多子句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在阅读Hibernate文档,但是我还没有找到任何解释如何执行以下操作的内容。



我有以下SQL代码'm试图转换为HQL:

  SELECT {msg。*},{cmd。*} 
FROM架构。消息AS msg
LEFT OUTER JOIN schema.send_commands AS cmd
ON cmd.message_key = msg.unique_key
AND(lower(cmd.status)IN(lower('failed')))
WHERE msg.sequence_received< 10;

我遇到的主要问题是我无法在LQL OUTER JOIN。HQL允许我有
ON cmd.message_key = msg.unique_key
,但是如何将
AND子句2?

解决方案

c $ c> with 关键字,像这样(取决于你的映射):

  SELECT m ,c 
FROM消息m LEFT JOIN m.commands c WITH(lower(c.status)='failed')
WHERE m.sequenceReceived< 10


16.3。关联和连接 >

I've been reading Hibernate documentation, but I haven't found anything that would explain how to do the following.

I have the following SQL code that I'm trying to convert to HQL:

SELECT {msg.*}, {cmd.*} 
FROM Schema.Messages AS msg 
  LEFT OUTER JOIN schema.send_commands AS cmd 
    ON cmd.message_key = msg.unique_key 
    AND ( lower(cmd.status) IN (lower('failed') ) ) 
WHERE msg.sequence_received < 10";

The mainissue I'm having is that I'm unable to have two clauses on a LEFT OUTER JOIN. HQL allows me to have ON cmd.message_key = msg.unique_key , but how do I add the AND clause 2?

解决方案

You can add extra join conditions using with keyword, something like this (depends on your mapping):

SELECT m, c 
FROM Message m LEFT JOIN m.commands c WITH (lower(c.status) = 'failed')
WHERE m.sequenceReceived < 10

See also:

这篇关于hibernate - HQL加入许多子句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆