精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-08
我有一个自动生成json的代码,就是通过反射所有的属性读取成json,但是由于我的bean是hibernate查询出来的bean,存在延时加载的对象时提示no session or session was closed错误信息,当然提示信息时很正常的,因为还没有加载的对象,到了Action中的时候,会话已经关系,如果解决这个问题
其实主要是通过代码进行分析,hibernate采用的cglib进行的对象的代理,只要能够判断出来他的类型就可以进行区别对待了,这里进行了代码的编写,通过反射取出一个对象的属性,然后判断这个属性的值的类型(注意一定不要使用取出来的值,包括toString也不行),判断是否是PO类型,如果是说明是延时加载的,自己进行处理就可以了,因为延时加载的目的就是不让他在前台显示i,所以可以过滤掉就可以了。
protected Object hibernateConvert(Object bean) { lazyInitializer.getIdentifier(); lazyInitializer.getImplementation();
所有取出来的对象的值都经过这个方法进行处理,取得对象以后,在进行操作,这样就不会提示上面的错误信息了
天天碰新问题,天天解决新问题,。。。。。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-01-08
open session in view
|
|
返回顶楼 | |
浏览 2857 次