У меня есть 2 сущностей с onetomany отношений:JPA HQL запрос с тем, где условие на FK colums
@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>();
}
и:
@javax.persistence.Entity
public class Service implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
@ManyToOne
@JoinColumn(name = "project_id")
private Project project;
// . . .
}
Существует способ сделать запрос JPA, который генерирует SQL запрос типа:
select * from service where project_id=?
??
Все запросы, которые я попробовал, генерируют всегда соединение в таблице Project.
Я попытался:
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 s from RmtService s where s.project.id = :id
, который генерирует запросы: 2
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=?
большое спасибо
Какие качества вы задавали? –
изменен inline в вопросе – JayZee