Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA 2.1 EntityGraph部分实体获取_Java_Jpa_Wildfly - Fatal编程技术网

Java JPA 2.1 EntityGraph部分实体获取

Java JPA 2.1 EntityGraph部分实体获取,java,jpa,wildfly,Java,Jpa,Wildfly,我是JPA竞技场的新手,在获取太多实体时遇到问题。例如,我想获取order的一个实例,以及仅获取OrderItems集合(order.items)中的ID。目前,我可以获取order以及OrderItems的所有实体。我试过loadgraph和fetchgraph,也试过不走运地使用子图 Thread@()提供了一个可能的解决方案,它用一个fetch类型标记每个属性,尽管我不确定这在我的OneToMany情况下是否有效 非常感谢您的帮助 我使用的是动态实体图,如下所示: 示例从() 你说的只有身

我是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;