简体   繁体   English

获取@ManyToOne字段数据时出现问题

[英]Problem in fetching data of @ManyToOne field

I am not getting data of @ManyToOne field. 我没有得到@ManyToOne字段的数据。

@Entity
public class UserDetail {

    @OneToMany(cascade = { CascadeType.ALL })
    @JoinColumn(name = "user_id")
    @JsonIgnore
    private List<UserOrder> orders;
}

@Entity
public class UserOrder {

    @ManyToOne
    @JoinColumn(name = "user_id")
    @JsonBackReference
    private UserDetail userDetail;

    @ManyToOne
    @JoinColumn(name = "runner_id")
    @JsonBackReference(value="runner")
    private UserDetail runner;

}

List<UserOrder> findAllByStatusNotInOrderByOrderDateDesc(List<OrderStatus> orderStatuses);

when i am fetching list of orders, i am expecting userdetail and runner in result, but i am not getting anything in JSON output. 当我获取订单列表时,我期待结果中的userdetail和runner,但我没有获得任何JSON输出。

You need to include the lazy load relation into the result. 您需要在结果中包含延迟加载关系。

@EntityGraph(attributePaths = "runner")
List<UserOrder> findAllByStatusNotInOrderByOrderDateDesc(List<OrderStatus> orderStatuses);

Or just set it eager load 或者只是设置它急切加载

Try to set the relation between those two entities in this way: 尝试以这种方式设置这两个实体之间的关系:

@Entity
public class UserDetail {

    @OneToMany(mappedBy="userDetail", cascade = { CascadeType.ALL })
    @JsonIgnore
    private List<UserOrder> orders;

    @OneToMany(mappedBy="runner", cascade = { CascadeType.ALL })
    @JsonIgnore
    private List<UserOrder> runnerOrders;
}



@Entity
public class UserOrder {

    @ManyToOne
    @JoinColumn(name = "user_id")
    @JsonBackReference
    private UserDetail userDetail;

    @ManyToOne
    @JoinColumn(name = "runner_id")
    @JsonBackReference(value="runner")
    private UserDetail runner;

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM