Java 从同一实体的内部联接获取Hibernate实体
我正在尝试让每个Java 从同一实体的内部联接获取Hibernate实体,java,postgresql,hibernate,jpa,Java,Postgresql,Hibernate,Jpa,我正在尝试让每个员工执行最后一个紧急工作(即具有最大结束时间的工作) 我有以下实体 紧急工作 @Entity @Table(name = "emergencyjobs", schema = "simulator") public class EmergencyJob { @Id private String jobId; private LocalDate dateLogged; private LocalTime timeLogged; private
员工执行最后一个紧急工作
(即具有最大结束时间的工作)
我有以下实体
紧急工作
@Entity
@Table(name = "emergencyjobs", schema = "simulator")
public class EmergencyJob {
@Id
private String jobId;
private LocalDate dateLogged;
private LocalTime timeLogged;
private double easting;
private double northing;
private String priority;
private Point location;
@ManyToOne
private Engineer assignedEngineer;
private LocalTime startTime;
private LocalTime endTime;
...
}
工程师
@Entity
@Table(name = "engineer", schema = "simulator")
public class Engineer {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int engineerId;
private Point homeLocation;
...
}
使用Hibernate生成的表,我可以使用以下查询在数据库中执行我需要的操作:
SELECT e.*
FROM simulator.emergencyjobs AS e
INNER JOIN (
SELECT
assigned_engineer_engineer_id,
max(end_time) as end_time
FROM simulator.emergencyjobs
GROUP BY assigned_engineer_engineer_id
) AS ee
ON e.assigned_engineer_engineer_id = ee.assigned_engineer_engineer_id
AND e.end_time = ee.end_time
但是我不知道如何使用它在Hibernate中检索EmergencyJob
实体列表
任何帮助都将不胜感激 这应该可以做到(fetch是可选的):
还要记住在EmergencyJob
实体上定义联接列:
@ManyToOne
@JoinColumn(name = "assigned_engineer_engineer_id")
private Engineer assignedEngineer;
谢谢这似乎是可行的,尽管我不得不从max函数中删除“distinct”,因为这显然是出乎意料的。
@ManyToOne
@JoinColumn(name = "assigned_engineer_engineer_id")
private Engineer assignedEngineer;