gpt4 book ai didi

hibernate - HQL隐式联接在where子句中生成交叉联接,而不是内部联接

转载 作者:行者123 更新时间:2023-12-04 03:07:00 25 4
gpt4 key购买 nike

我正在使用Hibernate 3.6和MSSQL 2012。

执行此HQL时

select tbl.state from Property tbl where tbl.state = 1 and tbl.entity.state = 1 and
tbl.entity.className = 'com....' and tbl.fieldName = 'fieldName'

我正在获取此SQL
select property0_.State as col_0_0_ from Properties property0_ cross join Entities
entity1_ where property0_.refEntityid=entity1_.id and property0_.State=1 and
entity1_.State=1 and entity1_.ClassName='com....' and property0_.FieldName='fieldName'

*请注意 交叉连接在where子句中添加了条件

根据Hibernate docs https://docs.jboss.org/hibernate/core/3.5/reference/en/html/queryhql.html#queryhql-joins-forms

隐式连接应该生成为 内部连接

我注意到有一个打开的错误 https://hibernate.atlassian.net/browse/HHH-7707可能与这个问题有关,但是没有人回答,它已经开放了一年。

我将不胜感激有关此问题的任何信息。谢谢你。

PS。我很清楚,使用隐式联接不是编写HQL的正确方法,但是我现在无法对此做任何事情。

最佳答案

您的联接是内部联接,但使用的旧语法包括在where子句中添加条件:

where property0_.refEntityid=entity1_.id

而不是用
inner join Entities entity1_ on property0_.refEntityid=entity1_.id

结果是完全一样的。

只要您了解它们在做什么,在HQL中使用隐式联接根本不是问题。

关于hibernate - HQL隐式联接在where子句中生成交叉联接,而不是内部联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20240959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com