JobName id 是主要的,并與 JobStatus jobid 映射
public class JobName implements Serializable {
private static final long serialVersionUID = 1;
@Id
@Column(name = "ID")
private Integer id;
@Column(name = "NAME")
private String name;
@Column(name = "SCHEDULEDTIME")
private String scheduledTime;
@Column(name = "THRESHOLD")
private Integer threshold;
@Column(name = "TYPE")
private String type;
@OneToMany(mappedBy = "jobName", fetch = FetchType.EAGER)
private List<JobStatus> jobStatus;
}
public class JobStatus implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID")
private Integer statusId;
@Column(name = "STARTDATE")
private Timestamp startDate;
@Column(name = "ENDDATE")
private Timestamp endDate;
@Column(name = "STATUS")
private String status;
@Column(name = "REMARKS")
private String remarks;
@ManyToOne
@JoinColumn(name = "JOBID")
@JsonIgnore
private JobName jobName;
}
@Repository
public interface JobRepository extends JpaRepository<JobName, Integer> {
@Query("select j from JobName j join j.jobStatus s where s.startDate> :fromDate")
public List<JobName> findJobNameBylastTime(@Param("fromDate") Timestamp fromDate);
}
我想從 startDate 大于發送日期的 jobstatus 表中獲取所有記錄。
我想要以下 json 格式的回應,我根據傳遞的日期得到正確的 jobName 串列大小,但獲取了 DB 中存在的所有 jobStatus 記錄。
{
"id":"",
"jobName": "",
"scheduledTime": "",
"threshold": "",
"type": "",
"jobStatus": [
{
"statusId":"",
"startDate": "",
"endDate": "",
"status": "",
"remarks": ""
},
{
"statusId":"",
"startDate": "",
"endDate": "",
"status": "",
"remarks": ""
}
]
}
]
uj5u.com熱心網友回復:
通過在查詢中添加 FETCH 來作業
@Repository
public interface JobRepository extends JpaRepository<JobName, Integer> {
@Query("select j from JobName j join fetch j.jobStatus s where s.startDate > :fromDate")
public List<JobName> findJobNameBylastTime(@Param("fromDate") Timestamp fromDate);
}
uj5u.com熱心網友回復:
首先,您的查詢似乎有錯誤,應該s.startDate > :fromDate是s.jobStatus
然后,如果你想查詢JobStatus物體,那么你應該使用 a JobStatusRepository:
@Repository
public interface JobStatusRepository extends JpaRepository<JobStatus, Integer> {
public List<JobName> findJobNameByCreationDateGreaterThan(Timestamp fromDate);
}
您不需要查詢,因為方法名稱就足夠了,您可能需要添加 a...Distinct...以避免重復。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524363.html
