在JPA 2.1中使用实体图时,有没有一种方法可以在有子图的子图时使用元模型?

时间:2016-02-18 14:18:19

标签: hibernate jpa hibernate-criteria

例如,考虑一个Customer实体有一组订单。每个订单都有一组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>

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

1 个答案:

答案 0 :(得分:2)

您可以使用重载方法:

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