JPA hibernate在内部执行多个select查询

时间:2017-12-10 03:00:11

标签: java hibernate jpa

问题陈述:在JPA hibernate中我执行一个方法

], "parent_id":10 } ], "parent_id":9 } ], "parent_id":8 }, { "id":11, "name":"Juice", "slug":"juice", "child":[ ], "parent_id":8 } ], "parent_id":0

正如预期的那样Contact contact = entityManager.find(Contact.class, Integer.valueOf(contactId));触发一个select查询以获取一个联系对象,但之后它会触发另一个select查询来获取我不想要的客户对象。
Customer对象是联系对象中的子对象 联系entiry有一个外键customerId。

要求:我希望entityManager触发一个选择查询获取联系对象,并且在没有第二个选择查询既不是连接查询也不执行任何操作。 联系对象:

EntityManager

1 个答案:

答案 0 :(得分:2)

我认为你的问题来自于使用@Fetch(FetchMode.join)和Lazy Loading。如果您不想急切加载客户,那么您应该删除@Fetch(FetchMode.join)并仅使用延迟加载

在此处查看有关此内容的更多信息(https://stackoverflow.com/a/29667050/2637940):

  

首先,@ Fetch(FetchMode.JOIN)和@ManyToOne(fetch =   FetchType.LAZY)是对立的,一个指示EAGER取,   而另一个则暗示了LAZY的获取。