我已经在追随问题上徘徊了两天,而我无法使其正常工作。这是问题所在。我有四个表(A,B,C,D),它们通过任何一种外键都不相互关联。但是,他们确实有一个名为“ superId”的列。
任务是从A表中获取所有记录,从其他具有匹配“ superId”(如果存在)的记录中查找记录,并通过JPA的构造函数表达式返回它们。
关于JOIN。由于这些表没有关系,因此我无法进行左联接(或任何其他联接)。
我尝试成功使用MULTISELECT,但是只有当我使用'a.superId = b.superId'进行隐式联接时,它才有效。这会导致问题,因为三个表可能没有匹配的记录,这会使查询返回空集。这不会飞。
我没有其他想法,这对我的项目至关重要。请原谅我一个问题的简单说明-通过手机发送。
最佳答案
您绝对不需要在JPA2中使用外键关系来执行任意查询。
您不能“跟从”父母/孩子的关系,所以您不能做通常的parentObject.childObject
事情。您必须改为使用Criteria API或HQL来构建联接。
看到:
Using the Criteria API to Create Queries
Creating Queries Using the Java Persistence Query Language
JPQL language reference: joins