Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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 Hibernate使用条件生成器生成的左连接被忽略_Java_Sql_Hibernate_Jpa - Fatal编程技术网

Java JPA Hibernate使用条件生成器生成的左连接被忽略

Java JPA Hibernate使用条件生成器生成的左连接被忽略,java,sql,hibernate,jpa,Java,Sql,Hibernate,Jpa,我有一个实体(个人)与另一个实体(可用性)和其他实体有@manytone关系。当我获取Persons时,我没有可用性为Null的Persons,因为Hibernate执行内部连接(如果我有一个急切的获取),或者选择如果是惰性的获取。 同时,我尝试根据结果创建另一个bean,因此我使用: query.select(builder.construct(MyPerson.class,root.get("availability").get("date").....) This will generat

我有一个实体(个人)与另一个实体(可用性)和其他实体有@manytone关系。当我获取Persons时,我没有可用性为Null的Persons,因为Hibernate执行内部连接(如果我有一个急切的获取),或者选择如果是惰性的获取。 同时,我尝试根据结果创建另一个bean,因此我使用:

query.select(builder.construct(MyPerson.class,root.get("availability").get("date").....)
This will generate 
   select a.date, ... from Person p, Availability a Where p.availId = a.id.
As I need a Left join, I have added to my code :
   Join<Availability, person> avail = root.join("availability", JoinType.LEFT);
怎么了? 它只生成左连接的唯一情况是使用根构造新bean。(使用延迟加载),但它将生成太多其他查询

 query.select(builder.construct(MyPerson.class,root)

最后,我找到了解决方案。事实上,我不需要使用 Join avail=root.Join(“可用性”,JoinType.LEFT)

因此,我删除了它,在创建新bean时,我做到了: query.select(builder.construct)(MyPerson.class、, root.join(“可用性”,JoinType.LEFT).get(“日期”))

现在,我只有一个生成的查询具有左外部联接

 query.select(builder.construct(MyPerson.class,root)