例如,假设一个客户实体具有一组订单。每个订单都有一组OrderItems。

我可以使用命名属性来做到这一点:

EntityGraph<Customer> eg = em.createEntityGraph(Customer.class);
Subgraph<Order> egChild = eg.addSubgraph("orders");
egChild.addAttributeNodes("orderItems");

如果我只对订单感兴趣,则可以使用元模型来做到这一点:
EntityGraph<Customer> eg = em.createEntityGraph(Customer.class);
eg.addSubgraph(Customer_.orders);

但是,如果我只想使用元模型来绘制整个图,那么我将无法做到这一点:
EntityGraph<Customer> eg = em.createEntityGraph(Customer.class);
Subgraph<Set<Order>> egChild = eg.addSubgraph(Customer_.orders);
egChild.addAttributeNodes(Order_.orderItems);

问题似乎是
eg.addSubgraph(Customer_.orders)

返回一个
Subgraph<Set<Order>>

而不是
Subgraph<Order>

这是元模型/实体图的缺点,还是我缺少什么?

最佳答案

您可以使用重载方法:

Subgraph<Order> egChild = eg.addSubgraph(Customer_.orders.getName(), Order.class);

10-05 18:54