Spring Data JPA:从类似实体的对象中的连接表中获取数据并应用规范/页面请求

时间:2017-08-22 18:21:01

标签: java spring jpa spring-data spring-data-jpa

我有一个场景,我希望对3个表参与的结果进行过滤,排序和分页。我想将连接结果的每一行组合成一个类似实体的对象,并对可能来自三个根表之一的属性应用可选过滤器。

以下是我的情景:

@Entity
public class CustomerEntity ... {
  ...

  @Column(nullable = false)
  public String                                 customerNumber;

  @OneToMany(mappedBy = "customer", cascade = CascadeType.ALL, orphanRemoval = true)
  public List<CustomerItemEntity> items;
}


@Entity
public class CustomerItemEntity ... {
  ...

  @Column(nullable = false)
  public String                                 itemNumber;

  @ManyToOne(optional = false)
  @JoinColumn(name = "customerId")
  public CustomerEntity customer;

  @OneToMany(mappedBy = "item", cascade = CascadeType.ALL, orphanRemoval = true)
  public List<DocumentEntity> documents;
}


@Entity
public class DocumentEntity ... {
  ...

  @Column(nullable = false)
  public LocalDate                                 validDate;

  @ManyToOne(optional = false)
  @JoinColumn(name = "itemId")
  public CustomerItemEntity item;
}

我想连接所有三个表,对任意属性应用零到n个过滤器,过滤并对完整结果进行分页。 结果应该是包含所有连接属性的扁平对象。

有没有办法将连接表转换为像普通实体一样工作的对象?

我想有这样的事情:

  • 看起来像连接表的实体,例如CustomerItemSummaryEntity
  • 使用Spring Data JPA的规范功能对CustomerItemSummaryEntity进行过滤,排序和分页。对于普通实体,我使用它:repository.findAll(specification, pageRequest)。原因是所有过滤器都是可选的。
  • customerNumberitemNumbervalidDate应该用于过滤,排序和分页(所有选项)。

有人可以帮忙吗?

0 个答案:

没有答案