【发布时间】:2019-12-07 13:09:09
【问题描述】:
我有实体 Client 和 Agency 与 ManyToOne 关系,所以表 client 有列 agency_id 指向表 agency,还有 Client 有:
@ManyToOne
@JoinColumn(name = "agency_id")
private Agency agency;
有 Spring Data JPA 规范来选择 Client 和 Agency id 的:
public static Specification<Client> withAgencyIds(Collection<Long> agencyIds) {
return (root, query, cb) -> root.join(Client_.agency).get(Agency_.id).in(agencyIds);
}
现在我必须将 ManyToOne 关系更改为 ManyToMany 关系,以便Client 拥有:
@ManyToMany
@JoinTable(name = "client_agency",
joinColumns = @JoinColumn(name = "client_id"),
inverseJoinColumns = @JoinColumn(name = "agency_id"))
@OrderBy("name")
private List<Agency> agencies = new ArrayList<>();
我应该如何调整上述规范以选择具有Agency id 的Client?
非常感谢您!
【问题讨论】:
-
root.join(Client_.agencies)不适合你吗?不确定您期望修改后查询的逻辑是什么 -
感谢您的回复,实际上这是我想到的第一件事,但我不确定这样的规范是否准确选择了机构 ID 在给定 ID 中的客户,将尝试对其进行测试。跨度>
-
@crizzis 挺好用的,你可以单独回答让我投票
标签: java jpa spring-data-jpa criteria-api