【发布时间】:2023-03-03 12:24:02
【问题描述】:
您好, 在我的领域模型中,
“家庭”有许多“子家庭” 'SubFamily' 有许多 'Locus's
关系是双向的,延迟加载。
即。 'Locus' 可以使用 alocus.getSubFamily() 在父 'SubFamily' 中访问;
在 sn-p 下面我给出了 DAO 方法来检索 Locus。
在我的网络应用程序中(基于 Wicket)
我从 DAO 获取轨迹,然后尝试将 SubFamily 获取为:
Locus alocus = dao.getLocusByLocusId(alocusid);
SubFamily asubfamily=alocus.getSubFamily();
但它会抛出错误:
org.hibernate.LazyInitializationException: 无法初始化代理 - 否 会议 在 org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:57) 在 org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111) 在 org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:150) 在 com.bigg.nihonbare.common.domain.SubFamily$$EnhancerByCGLIB$$a0d68bed.getSubFamilyId(
有什么建议吗?
public Locus getLocusByLocusId(final String LocusId) {
return (Locus) this.getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session) {
Criteria criteria = session.createCriteria(Locus.class);
criteria.add(Expression.eq("locusId", LocusId));
List result =criteria.list();
if (result!=null && result.size() > 0) {
return result.get(0);
}
return null;
}
});
}
【问题讨论】: