Java JPA 2.1 EntityGraph部分实体获取
我是JPA竞技场的新手,在获取太多实体时遇到问题。例如,我想获取order的一个实例,以及仅获取OrderItems集合(order.items)中的ID。目前,我可以获取order以及OrderItems的所有实体。我试过loadgraph和fetchgraph,也试过不走运地使用子图 Thread@()提供了一个可能的解决方案,它用一个fetch类型标记每个属性,尽管我不确定这在我的OneToMany情况下是否有效 非常感谢您的帮助 我使用的是动态实体图,如下所示: 示例从()Java JPA 2.1 EntityGraph部分实体获取,java,jpa,wildfly,Java,Jpa,Wildfly,我是JPA竞技场的新手,在获取太多实体时遇到问题。例如,我想获取order的一个实例,以及仅获取OrderItems集合(order.items)中的ID。目前,我可以获取order以及OrderItems的所有实体。我试过loadgraph和fetchgraph,也试过不走运地使用子图 Thread@()提供了一个可能的解决方案,它用一个fetch类型标记每个属性,尽管我不确定这在我的OneToMany情况下是否有效 非常感谢您的帮助 我使用的是动态实体图,如下所示: 示例从() 你说的只有身
你说的只有身份证是什么意思?仅初始化了ID字段的集合或包含ID?EntityGraph的集合不允许指定不加载的字段,而只允许指定要加载的字段on@AlanHay我的想法是只初始化ID字段的集合,但如果我能得到一个包含OrderItems ID的集合,这也可能奏效。
EntityGraph<Order> graph = this.em.createEntityGraph(Order.class);
graph.addAttributeNodes("items");
Map<String, Object> hints = new HashMap<String, Object>();
hints.put("javax.persistence.loadgraph", graph);
this.em.find(Order.class, orderId, hints);
@Entity
public class Order implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", updatable = false, nullable = false)
private Long id = null;
@Version
@Column(name = "version")
private int version = 0;
@Column
private String orderNumber;
@OneToMany(mappedBy = "order")
private Set<OrderItem> items = new HashSet<OrderItem>();
...
@Entity
public class OrderItem implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", updatable = false, nullable = false)
private Long id = null;
@Version
@Column(name = "version")
private int version = 0;
@Column
private int quantity;
@ManyToOne
private Order order;
@ManyToOne(fetch = FetchType.LAZY)
private Product product;