SpringDataJPAに変換する前のクエリは次のとおりです。Hibernate.initialize()
ウィジェットのメッセージを手動でフェッチするために使用した方法に注目してください。
public Object findWidget(final Widget findMe) {
Widget widget = getJpaTemplate().execute(new JpaCallback<Widget>() {
public Widget doInJpa(EntityManager em) throws PersistenceException {
Query q = em.createQuery("SELECT h FROM " + entityClass.getName() + " h where h.widgetId = ? ");
q.setParameter(1, findMe.getId());
Widget found = (Widget)q.getSingleResult();
//Initialize lazy associations
if(found!= null){
Hibernate.initialize(widget.getMessages());
}
return found;
}
});
return widget;
}
そして、これが私のクエリ関数が今どのように見えるかです。入れるボディがないことに注意Hibernate.initialize()
してください。
@Query("SELECT h FROM Widget h where h.widgetId = ?1 ")
public AccessPoint findWidget(String widgetId);
では、ウィジェットのメッセージが遅延せずにアクティブにフェッチされるように指定するにはどうすればよいですか?