【发布时间】:2021-12-07 19:58:00
【问题描述】:
我是 JPA 的新手,并尝试进行左外连接,前提是本地 JPA 查询中满足条件。
本机查询如下所示。在这里,我想使用 where 条件执行 A left outer join B,前提是应用程序中的给定标志 toJoin 为真:
select a.id, a.name from A left outer join B on A.id = B.aid where b.name="some_name"
我不确定,我将如何在我的 JPA 存储库中容纳上述本机 JPA 查询中的 toJoin 应用程序标志。
编辑
我只是想在CASE WHEN 的帮助下在 mysql 中实现同样的效果,示例条件如下:
select a.id from A a, case when 1=2 then left outer join B b ON a.id = b.aid end limit 2;
但是我遇到了语法错误。
【问题讨论】:
-
为什么你的条件中不能有两个查询?
IF <select ...> else <select ...> -
@maSTAShuFu 我不确定,我将如何在我的 JPA 存储库中编写 IF 子句。如果可能的话,你能举一个简短的例子吗?谢谢。
-
@maSTAShuFu 我浏览了链接。但截至目前,JPA 存储库中的所有查询都是原生的,其中几个查询我一直在进行更改。到目前为止,还没有使用 Criteria builder。我在想,为了遵循链接中建议的方法,我必须进行大量更改。所以我想知道是否有任何方法可以在本机查询的帮助下实现这一点。
-
你为什么不做一个内部连接?
标签: java mysql spring-boot jpa spring-data-jpa