例如,假设一个客户实体具有一组订单。每个订单都有一组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);