有条件的左外部联接SQL查询到JPQL - java

SQL FIDDLE LINK FOR THIS DATA

什么是 jpql 等效于以下 SQL 查询:

select * from App left outer join App_Child on (App.id=App_Child.id and App_Child.status = 'active') where App.status='active' and App.id=1;

样本数据:

ij> select * from App;
ID         |STATUS
----------------------
1          |active
2          |active1
3          |active3
5          |active

4 rows selected
ij> select * from App_Child;
ID         |STATUS    |D
----------------------------------
1          |active    |1
2          |active11  |2
1          |active111 |3
1          |active    |4

4 rows selected
ij> select * from App left outer join App_Child on (App.id=App_Child.id and App_Child.status = 'active') where App.status='active' and App.id=1;
ID         |STATUS    |ID         |STATUS    |D
---------------------------------------------------------
1          |active    |1          |active    |1
1          |active    |1          |active    |4

2 rows selected
ij> select * from App left outer join App_Child on (App.id=App_Child.id and App_Child.status = 'active') where App.status='active' and App.id=5;
ID         |STATUS    |ID         |STATUS    |D
---------------------------------------------------------
5          |active    |NULL       |NULL      |NULL

1 row selected

编辑:我们正在使用 jpa 2.0

参考方案

由于App.id=App_Child.id的关系,条件@ManyToOne会自动添加。在JPA 2.1中,您可以使用显式的on子句添加其他条件:

select a 
from App a left outer join 
     a.children c on (c.status = 'active') 
where a.status='active' and a.id=1;

参见例如EclipseLink Documentation。

如何在Google App Engine(Java)中创建Excel文件? - java

谷歌搜索了两天后,这个问题似乎对Python有很多选择,但对Java没有任何选择。到目前为止,我真的真的可以使用一些帮助,推荐使用gaeVFS从xml组件中构建一个excel文件,然后将其全部压缩在一起,听起来像是一巴掌。哦,是的,如果您想知道我是在问我使用Java而不是python的问题,但是在5,000行代码的情况下,现在就回头吧……您可能会发现有用的其…

Java:正则表达式模式匹配器是否有大小限制? - java

我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)

使用Appengine开发服务器测试邮件(java) - java

我正在使用javamail从我的appengine应用程序发送邮件。它在部署中可以完美地工作,但是我不知道如何使用开发服务器来做到这一点。每当我需要测试sendmail时,就必须部署非常烦人的应用程序。 背景信息(为什么日志不起作用):我们知道电子邮件会转到appengine开发服务器上的日志。但是,想要从开发服务器发送电子邮件的主要原因是能够测试电子邮件的…

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

Java:我可以在Hashmaps中使用数组吗? - java

我可以在Hashmaps中使用数组吗?如果是这样,则声明这种哈希图的确切语法是什么?谢谢 参考方案 数组也是对象。甚至像int[]这样的原始数组。Map<String,String[]> map = new HashMap<String,String[]>();