分类: Java
2012-11-21 15:30:18
今天碰见一个难题,Hibernate中使用hql查询,如果有懒加载,那么在使用springMVC当中会出现转换json的错误,即懒加载导致对象json化失败。(有两种方法:第一种是网友提供)
第一种
懒加载obj的时候,此时obj是具有一个代理对象的,所以json转化的时候函数认为这个对象是存在的,所以依然去执行get方法进行
为了解决这个问题查了很多资料,最后觉得如果是obj的懒加载问题,那么在使用hql查询的时候不查出这个懒加载对象不就行了吗?
照着这个方向,研究了下Hibernate只取出需要用到的字段
首先Hibernate是支持这样查询的,查询语句如下
但是使用这个语句会出现错误:
这个说明没有使用对应的构造函数。
注意了同学们:上面的hql语句中有new Product(p.id, p.name, p.image) 这端代码,这端代码其实是创建一个新的Product对象,那么就需要与此相同的一个构造函数,上面的错误就是告诉你,hibernate没有找到对应的构造函数
好了问题找到了,咱们添加构造函数吧,记住这个构造函数的参数一定要与你hql中想取得的参数一模一样
如下:
再次运行,就OK了
这个事情告诉咱们,要换位思考哦~