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;