假设我们有两个实体类:Order和OrderItem。Order有一个OneToMany的关系,它包含多个OrderItem。我们想要使用HQL从Order中获取OrderItem的集合。 首先,我们需要在Order类中定义OneToMany关系: ``` @Entity public class Order { @Id private Long id; @OneToMany(mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true) private List<OrderItem> orderItems = new ArrayList<>(); // getters and setters } ``` 在OrderItem类中,我们需要定义ManyToOne关系: ``` @Entity public class OrderItem { @Id private Long id; @ManyToOne @JoinColumn(name = "order_id") private Order order; // getters and setters } ``` 现在我们可以使用HQL从Order中获取OrderItem的集合: ``` String hql = "SELECT oi FROM Order o JOIN o.orderItems oi WHERE o.id = :orderId"; List<OrderItem> orderItems = entityManager.createQuery(hql, OrderItem.class) .setParameter("orderId", orderId) .getResultList(); ``` 在这个HQL查询中,我们使用JOIN关键字连接Order和OrderItem实体类。我们使用o.orderItems来访问Order中的orderItems集合。最后,我们使用setParameter方法设置orderId参数的值。 这个查询将返回一个Order中的所有OrderItem的集合。