我有两个相关的实体。
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的航班。
到目前为止,我有:
SELECT u FROM User u LEFT JOIN u.flightBookingCollection AS fb WHERE fb.status = 1
但是只返回至少有一个flightBooking且状态为1的用户。
谢谢!
答案 0 :(得分:0)
这是根本错误的做法。 JPA映射是关于定义数据模型,而不是定义特定查询结果的结构。这意味着当查询结果返回时,User应该拥有所有(在急切提取的情况下)加载的flightBookingCollection元素,而不仅仅是其中一些。
如果需要其他类型的结果,必须使用适当的构造函数创建专用对象以呈现结果,并使用SELECT NEW构造创建。可以在this问题中找到示例。