一个nested exception问题

一个hibernate报的异常:nested exception is org.hibernate.QueryException: could not resolve property困扰了我好一阵。

原来是因为hibernate对象不能多层嵌套查询,比如:
dc.add(Restrictions.eq(“wdxcAddressbookClass.wdxcUser.id”,ownerId));
改为:
dc.add(Restrictions.sqlRestriction(“{alias}.classid in (select id from wdxc_addressbook_class where ownerid=?)”,ownerId,Hibernate.LONG));
之后就可以了

顺便把前几天遇到的一个问题也记录一下:

环境是jsf+spring+hibernate,由于页面还没设计好,后台业务处理部分已经写好了,想测试一下,就做了一个测试jsp页面
异常信息:could not initialize proxy – the owning Session was closed
解决方法一:
[java]
public WdxcAddressbook getAddressbookByID(Serializable id) {
WdxcAddressbook addressbook =(WdxcAddressbook)dao.load(WdxcAddressbook.class,id);
//System.out.println(addressbook.getId());
return addressbook;
}
[/java]
在spring接口实现类中获取一下对象,就是上面注释掉的
解决方面二:
在web.xml中把.jsp页面也添加到hibernate的filter-mapping
原因:原来jsf的hibernate filter处理的都是.faces的页面,没有处理.jsp的页面,而且hibernate数据库实际获取操作是在用户实际获取值的时候发生的,所以需要filter把session延迟到jsp页面中

评论区已关闭