gpt4 book ai didi

java - Hibernate,处理 Criteria 和左外连接条件

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

我有一段现有的代码,如下所示:

Criteria crit = session.createCriteria(myClass);
crit.createAlias(TAB1, TAB1, JoinType.LEFT_OUTER_JOIN);
crit.createAlias(TAB1 + ".table2", TAB2, JoinType.LEFT_OUTER_JOIN);
crit.add(Restrictions.eq(TAB1 + ".deleted", Boolean.FALSE));
crit.add(Restrictions.eq(TAB2 + ".id", someId));

这“生成”一个如下所示的 SQL 查询:

SELECT * FROM myClass this_
LEFT OUTER JOIN TAB1 tab1_ ON this_.id=tab1_.myClass_id
LEFT OUTER JOIN TAB2 tab2_ ON tab1_.tab2_id=tab2_.id
WHERE tab1_.deleted=0
AND tab2_.id = 1234

我需要将过滤器放在 JOIN 条件中,而不是放在 WHERE 子句中。

为了清楚起见,我需要进行以下查询:

SELECT * FROM myClass this_
LEFT OUTER JOIN TAB1 tab1_ ON this_.id=tab1_.myClass_id AND tab1_.deleted=0
LEFT OUTER JOIN TAB2 tab2_ ON tab1_.tab2_id=tab2_.id AND AND tab2_.id = 1234

我该怎么做?

谢谢

最佳答案

您正在使用:

crit.createAlias(${table}, ${alias}, ${joinType});

您应该能够使用:

crit.createAlias(${table}, ${alias}, ${joinType}, ${Criterion});

虽然我在我们的代码库中找不到示例,但我希望它能够工作。

关于java - Hibernate,处理 Criteria 和左外连接条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44413413/

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