带有联接的JPA条件构建器包装器

时间:2018-11-08 04:39:13

标签: java jpa criteria criteria-api

如何使用JPA Criteria构建器构建DTO,并在通过一对多关系链接的表上进行联接?

在文档中,没有使用包装器和连接用例的示例。

JPA Doc

例如:

EntityA {
   String name;

   @OneToMany
   Set<EntityB> items;

   ...
}


Wrapper {
   name;
   Set<EntityB> items;
}

1 个答案:

答案 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;
    }