Java Hibernate - 使用HQL从单向OneToMany关系中获取集合

bluesky1年前 ⋅ 197 阅读

ChatGPT的回答仅作参考:

假设我们有两个实体类: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的集合。

全部评论: 0

    相关推荐