JPQL Left Join-在返回所有左行的同时过滤右行

JPQL Left Join-在返回所有左行的同时过滤右行,join,left-join,jpql,Join,Left Join,Jpql,我有两个像这样相关的实体 public class User { @Column(name = "ID") private Integer id; @OneToMany(mappedBy = "customerUserId") private Collection<FlightBooking> flightBookingCollection; } public class FlightBooking { @Column(name = "ID")

我有两个像这样相关的实体

public class User {
    @Column(name = "ID")
    private Integer id;
    @OneToMany(mappedBy = "customerUserId")
    private Collection<FlightBooking> flightBookingCollection;
}
public class FlightBooking {
    @Column(name = "ID")
    private Integer id;
    @Column(name = "STATUS")
    private Integer status;
    @JoinColumn(name = "CUSTOMER_USER_ID", referencedColumnName = "ID")
    @ManyToOne
    private User customerUserId;
}
但这只返回至少有一个状态为1的flightBooking的用户


谢谢

这是根本错误的方法。JPA映射是关于定义数据模型的,而不是关于定义特定查询结果的结构。这意味着,当作为查询结果返回时,用户应该加载flightBookingCollection的所有元素(在急切获取的情况下),而不仅仅是其中的一部分

如果需要其他类型的结果,则必须使用适当的构造函数创建用于显示结果的专用对象,并使用SELECT NEW construct创建该对象。从问题中可以找到例子

SELECT u FROM User u LEFT JOIN u.flightBookingCollection AS fb WHERE fb.status = 1