首页 > 解决方案 > 根据jpa中的两个外国ID获取行

问题描述

我正在使用 PostgreSQL 作为数据库,我想获取其两列与另一个表的外键匹配的所有行。

我已将表中的关系映射为:

@JsonIgnore
@ManyToOne
@JoinColumn(name = "projects_id", referencedColumnName="id")
private Projects projects;

@JsonIgnore
@ManyToOne
@JoinColumn(name = "reports_id", referencedColumnName="id")
private Reports reports;

这是我在界面中定义的 CRUD 方法:

List<ProjectReportTask> findByProjectsIdAndReportsId(Long id, Long id2);

但是当我调用这个方法时,列表是空的,而不是在数据库中,我有两个 id 都存在的记录

标签: spring-bootjpamany-to-one

解决方案


我确实看到方法命名有任何问题。但是,当我的实体使用@NaturalId. 所以我建议你手动编写查询。

@Query(value="SELECT prt FROM 
ProjectReportTask prt 
WHERE prt.projects.id = ?1 AND prt.reports.id = ?2 ")
List<ProjectReportTask> getProjectReportTask(Long id, Long id2);

推荐阅读