我有一个场景需要对3个表中的结果进行过滤、排序和分页。
目前,我使用Spring Data JPA的Specification功能来处理单个实体:repository.findAll(specification, pageRequest)
。
这很好用,但现在我有另一个场景,排序/筛选属性分布在由一对多关系连接的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;
}
有没有一种方法可以同时使用PageRequest
和Specification
来过滤、排序和分页customerNumber
、itemNumber
和validDate
?