Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA的意外行为_Java_Jpa_Jpql - Fatal编程技术网

Java JPA的意外行为

Java JPA的意外行为,java,jpa,jpql,Java,Jpa,Jpql,因此,我有一个查询,我正在运行它并从db2获取结果 如果我使用这个查询,它将返回一个名称列表 String query2 = "SELECT nh.Name FROM NameHistory nh,NameSourcing ns WHERE ns.supplierIcId = nh.nameId "; 但是如果我使用这个查询,我不会得到任何结果。(因为我还有一些其他的回执要做,这些回执在这里是不相关的)—— 我不知道我哪里出了问题,也不知道这件事。对此有何解释?嗯,其中一个表必须是空的。这

因此,我有一个查询,我正在运行它并从db2获取结果

如果我使用这个查询,它将返回一个名称列表

String query2 = "SELECT  nh.Name  FROM NameHistory nh,NameSourcing ns WHERE ns.supplierIcId = nh.nameId ";
但是如果我使用这个查询,我不会得到任何结果。(因为我还有一些其他的回执要做,这些回执在这里是不相关的)——


我不知道我哪里出了问题,也不知道这件事。对此有何解释?

嗯,其中一个表必须是空的。这种行为是预期的,与SQL完全相同。使用实体之间的关联,并使用联接。必要时使用左连接。实体中不应该有其他实体的ID。您应该使用关联(ManyToOne、OneToOne等)。@JBNizet-Hmm。。事实上是这样。应该只使用这个。但是像这样使用它,而不是进行关联和联接,难道不是更容易吗?不,一点也不。JPQL只允许有关联的连接。你只能按你现在的方式进行“排序”内部连接,而使用Association,你可以从city-city-where-city.country.continent.name='Europe'中选择城市。您无法在没有关联的实体中导航,这是使用对象的最大优点之一。@JBNizet很好,谢谢。你的建议是使用左连接而不是内部连接,效果非常好。答对 了
String query2 = "SELECT nh.Name FROM NameHistory nh,NameSourcing ns ,BomItem bi,CommodityClassificationSupplierXref ccsx,MaterialMaster mm WHERE ns.supplierIcId = nh.nameId ";