为了账号安全,请及时绑定邮箱和手机立即绑定

弹簧 JPA - 如何从自连接表输出有限的字段

弹簧 JPA - 如何从自连接表输出有限的字段

烙印99 2022-09-22 19:57:49
我有一个名为“员工”的实体,它与自己有联系。联接表示谁是该员工的经理。当我查询记录时,我得到了员工的整个层次结构。我希望实现的是只获取经理的几个字段,而不希望获取员工的经理的经理。我尝试使用但无法获得预期的输出来执行此操作。也使用过。@NamedEntityGraphProjections我还尝试了这里提到的方法JPA 使用连接表进行自连接自加盟春联欢注意 - 我不想使用注释@Query@Entitypublic 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"}
查看完整描述

2 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

您应该在不希望包含的字段中使用注释。查看此处此处以获取更多信息。@JsonIgnore



查看完整回答
反对 回复 2022-09-22
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

try using lazy load

@ManyToOne(fetch=FetchType.LAZY)


查看完整回答
反对 回复 2022-09-22
  • 2 回答
  • 0 关注
  • 58 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信