java - 多对多的 JPA 标准规范
问题描述
我有实体Client
和Agency
ManyToOne 关系,所以该表client
有agency_id
指向 table的列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<>();
我应该如何调整上面的规范以选择Client
具有Agency
id 的?
非常感谢您!
解决方案
这个 JPA 标准规范工作正常:
public static Specification<Client> withAgencyIds(Collection<Long> agencyIds) {
return (root, query, cb) -> root.join(Client_.agencies).get(Agency_.id).in(agencyIds);
}
推荐阅读
- azure - Azure 应用服务计划 | 放大/缩小灰色
- javascript - 提交按钮重新加载页面
- tcp - 在 Postman Beta 功能的 WebSocket 请求中传递端口
- gcc - 英特尔 MPI 2019 始终使用 gcc 版本 4.9.3
- vsto - 如何在 Office vsto 插件开发中使用不同的配置文件进行开发和生产
- swift - 我搜索并搜索了 SwiftUI Switch Case Menu Cycle?
- amazon-web-services - Github Action ->“错误:禁止:无效凭证或此 AWS S3 存储桶名称可能已被使用”
- amazon-web-services - 编辑部署为容器映像的 AWS lambda 函数代码
- mysql - 根据表 2 上的条件在表 1 中插入 - MySQL
- sql - 在数据库中查找每个季度上个月的第一天?