Hibernate FK列上带where条件的JPA HQL查询

Hibernate FK列上带where条件的JPA HQL查询,hibernate,jpa,hql,Hibernate,Jpa,Hql,我有两个实体拥有一对一关系: @Entity public class Project { @Id @GeneratedValue(strategy=GenerationType.AUTO) private long id; @OneToMany(mappedBy="project",cascade=CascadeType.ALL) private java.util.List<RmtService> services = new ArrayList<RmtService

我有两个实体拥有一对一关系:

@Entity
public class Project {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;


@OneToMany(mappedBy="project",cascade=CascadeType.ALL)
private java.util.List<RmtService> services = new ArrayList<RmtService>();

}
有一种方法可以执行生成SQL查询的JPA查询,如:

select * from service where project_id=?
?

我尝试过的所有查询都会在项目表上生成联接

我试过:

select s from Service s left join fetch s.project pp where pp.id = :id 
产生

select rmtservice0_.id as id1_1_0_, project1_.id as id1_0_1_, 
rmtservice0_.project_id as project3_1_0_, rmtservice0_.serviceType 
as serviceT2_1_0_, project1_.name as name2_0_1_, project1_.surname
as surname3_0_1_ from RmtService rmtservice0_ 
left outer join Project project1_ on rmtservice0_.project_id=project1_.id 
where   project1_.id=? 

这将生成两个查询:

select rmtservice0_.id as id1_1_, rmtservice0_.project_id as project3_1_, 
rmtservice0_.serviceType as serviceT2_1_ from RmtService rmtservice0_ where 
rmtservice0_.project_id=?

select project0_.id as id1_0_0_, project0_.name as name2_0_0_, project0_.surname
as surname3_0_0_ from Project project0_ where project0_.id=?

非常感谢

您尝试了哪些查询?在问题中进行了内联更改非常感谢!实际上,即使是这个版本也引发了2个查询,因为我没有强迫@ManyToOne变为lazy,当我将它改为lazy时,它工作得很好。我确实认为可能是这样。很高兴我能帮忙。
SELECT s FROM Service s
WHERE s.project = :project
select rmtservice0_.id as id1_1_, rmtservice0_.project_id as project3_1_, 
rmtservice0_.serviceType as serviceT2_1_ from RmtService rmtservice0_ where 
rmtservice0_.project_id=?

select project0_.id as id1_0_0_, project0_.name as name2_0_0_, project0_.surname
as surname3_0_0_ from Project project0_ where project0_.id=?
SELECT s FROM Service s
WHERE s.project = :project