java - 使用 PostgreSQL 在 Spring Boot 中的 JpaRepository 查询中返回列名
问题描述
我有一个表 Job_Applicants,其中有一个名为 review 的列,其中包含一个布尔值,还有一个状态列,其中包含一个字符串值
进行以下查询时
@Query("select a.applicant, a.reviewed, a.status from JobApplicants a where
a.job.id = ?1")
List<JobApplicants> getOnlyApplicants(UUID jobId);
我得到以下信息:
"jobApplicantList": {
"bca4ed5c-b81a-420d-8b8b-9130d815d5f1":[
{
"id": "109ca778-8526-40c6-a9dd-1f4e6ef2fef7",
"createdDate": "2018-05-20T11:22:50.607",
"lastModifiedDate": "2018-05-20T11:22:50.607",
"address": null,
"firstName": "Xxxx",
"lastName": "Xxx",
"email": "xxxx@gmail.com",
"phoneNumber": "xxxxxx",
"resume": "xxx.pdf",
"resumeUrl": "https://",
"coverLetter": "xxx.pdf",
"coverLetterUrl": "https:/",
"website": "sdfasdfasdf"
},
null,
null
],
}
我添加的所有 XXX 以删除个人信息。
但是正如您所看到的,review 和 status 列没有列名,有没有办法可以调整我的查询以包含列名?
所以它最后不读“null,null”?
我想让它读到 "reviewed":null, "status":null
如果有帮助,这是我的实体
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.UUID;
@Entity
@Table(name = "JOB_APPLICANTS")
public class JobApplicants {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@org.hibernate.annotations.Type(type="org.hibernate.type.PostgresUUIDType")
private UUID id;
private String status;
private Boolean reviewed;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "APPLICANT_ID")
private Applicant applicant;
@ManyToOne()
@JoinColumn(name = "JOB_ID")
private Job job;
@CreationTimestamp
private LocalDateTime appliedOnDate;
@UpdateTimestamp
private LocalDateTime lastModifiedDate;
public JobApplicants(){}
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Boolean getReviewed() {
return reviewed;
}
public void setReviewed(Boolean reviewed) {
this.reviewed = reviewed;
}
public Applicant getApplicant() {
return applicant;
}
public void setApplicant(Applicant applicant) {
this.applicant = applicant;
}
public Job getJob() {
return job;
}
public void setJob(Job job) {
this.job = job;
}
public LocalDateTime getAppliedOnDate() {
return appliedOnDate;
}
public void setAppliedOnDate(LocalDateTime appliedOnDate) {
this.appliedOnDate = appliedOnDate;
}
public LocalDateTime getLastModifiedDate() {
return lastModifiedDate;
}
public void setLastModifiedDate(LocalDateTime lastModifiedDate) {
this.lastModifiedDate = lastModifiedDate;
}
@Override
public String toString() {
return "JobApplicants{" +
"id=" + id +
", status='" + status + '\'' +
", reviewed=" + reviewed +
", applicant=" + applicant +
", job=" + job +
", appliedOnDate=" + appliedOnDate +
", lastModifiedDate=" + lastModifiedDate +
'}';
}
}
解决方案
我找到了答案。获得我想要的结果的正确查询是:
@Query("select new JobApplicants (a.status, a.reviewed, a.applicant, a.appliedOnDate, a.lastModifiedDate) from JobApplicants a where a.job.id = :jobId")
List<JobApplicants> getOnlyApplicants(@Param("jobId") UUID jobId);
该查询返回:
"bca4ed5c-b81a-420d-8b8b-9130d815d5f1": [
{
"id": "ca72dbf5-d20e-482b-a983-909866342c0c",
"applicant": {
"id": "109ca778-8526-40c6-a9dd-1f4e6ef2fef7",
"createdDate": "2018-05-20T11:22:50.607",
"lastModifiedDate": "2018-05-20T11:22:50.607",
"address": null,
"firstName": "Xxxx",
"lastName": "xxx",
"email": "xxx@gmail.com",
"phoneNumber": "xxx",
"resume": "xxx.pdf",
"resumeUrl": "https://xxx.pdf",
"coverLetter": "xxx.pdf",
"coverLetterUrl": "https://xxx.pdf",
"website": "sdfasdfasdf"
},
"job": null,
"appliedOnDate": "2018-05-20T11:22:50.611",
"lastModifiedDate": "2018-05-20T11:22:50.611",
"status": "approved",
"reviewed": null
},
如果您遇到相同的问题,这两个线程可以帮助我弄清楚:
推荐阅读
- javascript - 如何清除和覆盖表格结果
- javascript - 捕获 waitForSelector 错误
- arrays - 分段错误 Core Dumped X86 Assembly Array
- c# - 如何等待带有回调的外部响应?
- javascript - 如何计算同一天的持续时间?
- google-cloud-platform - 用于 DataFlow 和 DataPrep 的 ZONE_RESOURCE_POOL_EXHAUSTED
- r - R Bass Diffusion 使用 nls() 和预测器
- objective-c - 如何从 Objective-C 调用 Swift 可变参数方法?
- sql - 从 LEFT JOIN 中仅检索一条记录
- php - 在PHP中获取给定中心纬度/经度的圆的外部坐标