问题陈述:在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
答案 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的获取。