【发布时间】:2023-04-09 13:59:01
【问题描述】:
我有以下实体:
Person.java
@Table(name = persons)
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "UserID", nullable = false)
private Long userId;
@Column(name = "Employeenumber", nullable = false) private String employeeNumber;
@Column(name = "Firstname", nullable = false) private String firstName;
@Column(name = "Lastname", nullable = false) private String lastName;
public User() { }
public User(String employeeNumber, String firstName, String lastName) {
super();
this.employeeNumber = employeeNumber;
this.firstName = firstName;
this.lastName = lastName;
}
/*
getter and setters
...
*/
}
Personhistory.java
@Entity
@Table(name = personhistory)
public class Personhistory {
@Id
@Column(name = "UserID", nullable = false)
private Long userId;
@Column(name = "Fromdate", nullable = false) private Date fromDate;
@Column(name = "Todate", nullable = false) private Date toDate;
@Column(name = "TeamID", nullable = false) private Integer teamId;
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "UnikId", nullable = false)
private Integer unikId;
public Userhistory() {
}
public Userhistory(Long userId, Date fromDate, Date toDate, int teamId) {
super();
this.userId = userId;
this.fromDate = fromDate;
this.toDate = toDate;
this.teamId = teamId;
}
/*
Getters and setters
...
*/
}
Team.java
@Entity
@Table(name = "team")
public class Team {
@Id
@Column(name = "TeamID")
@GeneratedValue(strategy = GenerationType.AUTO)
private int teamId;
@Column(name = "TeamNumber") private String teamNumber;
public Team() {}
public Team(String teamNumber) {
super();
this.teamNumber = teamNumber;
}
/*
Getters and setters
...
*/
}
我想进行这样的 API 调用:
localhost:8080/users/{employee}
并返回一个包含此人的对象(他的员工编号、名字和姓氏),他在团队中的时间以及是哪个团队。
如果我用 MSSQL 编写这个查询,它会是这样的:
select * from persons p
join personhistory ph on ph.UserID = p.UserID
and ph.Fromdate <= cast(getdate() as date)
and ph.Todate >= cast(getdate() as date)
join team t on t.TeamID = ph.TeamID
where u.Employeenumber = '999'
我已经四处寻找不同的解决方案,如 HQL、JPQL、Criteria 等,但我无法使其工作。
任何帮助将不胜感激。
【问题讨论】: