我有一个名为employee的实体,它自己加入了自己。加入是代表谁是该员工的经理。当我查询记录时,我得到了员工的整个层次结构。
我希望实现的目标只是获取经理的几个字段,而不想取得员工经理的经理。
我尝试使用@NamedEntityGraph
但无法获得预期的输出。二手Projections
也是如此。
我也试过这里提到的方法
注意 - 我不想使用@Query
注释
@Entity
public class Employee {
@Id
@Column(name = "employeeId", nullable = false)
private String employeeId;
@Column(name = "firstName", nullable = false)
private String firstName;
@Column(name = "lastName", nullable = false)
private String lastName;
@Column(name = "middleName")
private String middleName;
@Column(name = "dateOfJoining", nullable = false)
private LocalDate dateOfJoining;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "line_manager_id")
private Employee manager;
}
实际结果 -
{
"firstName":"Super",
"lastName":"Manager",
"middleName":"",
"dateOfJoining":"2012-12-31",
"manager":{
"firstName":"Super",
"lastName":"Manager",
"middleName":"",
"dateOfJoining":"2012-12-31",
"manager":{
"firstName":"Admin",
"lastName":"User",
"middleName":"",
"dateOfJoining":"2012-12-31",
"manager":{
"firstName":"Admin",
"lastName":"User",
"middleName":"",
"dateOfJoining":"2012-12-31",
"manager": null,
"employeeId":"P67"
},
"employeeId":"P68"
},
"employeeId":"P69"
},
"employeeId":"P70"
}
预期结果
{
"firstName":"Super",
"lastName":"Manager",
"middleName":"",
"dateOfJoining":"2012-12-31",
"manager":{
"firstName":"Super",
"lastName":"Manager",
"employeeId":"P69"
},
"employeeId":"P70"
}