如何使用JPA Criteria构建器构建DTO,并在通过一对多关系链接的表上进行联接?
在文档中,没有使用包装器和连接用例的示例。
例如:
EntityA {
String name;
@OneToMany
Set<EntityB> items;
...
}
Wrapper {
name;
Set<EntityB> items;
}
答案 0 :(得分:1)
如果我没记错的话,你做不到。投影不处理联接。也许您可能想查询EntityB
而不是EntityA
的{{1}}的列表,然后将项目列表传递给采用父实体及其列表的Dto对象。当然,这不是您想要的,但是应该完成任务。因此,例如:
items
并使用它:
@Entity
public class EntityA {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy="a")
private Set<EntityB> bs;
@Entity
public class EntityB {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@ManyToOne
private EntityA a;
public class WrapperDto {
private EntityA a;
private List<EntityB> bs;
public WrapperDto(EntityA a, List<EntityB> bs) {
this.a = a;
this.bs = bs;
}