浏览 10851 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-11-09
最后修改:2009-11-10
百事通信息网
今天用DWR+Spring做整合时,发现不能通过DWR实现延迟加载,仅管在session关闭前已经做过初始化Hibernate.initialize(article.getUser());,不过还是会报session已被关闭.这个问题怎么解决呢 测试了一下 将要延迟的对象在dwr.xml中配转换 将PO中数据取出来放到集合,将集合返回给客户端,这样就不会出错 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-11-09
个人见解:
对于你需要的实体,DWR所作的操作是在页面进行的,也就是说很有可能这些动作已经不再是session-per-request的能力范围了。所以,此时对数据的延迟加载(lazy associations)操作你就有可能会得到Session已经关闭的提示。 |
|
返回顶楼 | |
发表时间:2006-11-09
说到了问题的关键,那怎么样解决呢?
|
|
返回顶楼 | |
发表时间:2006-11-09
还有一个问题是
举例说明: 如果表A跟表B是1:n关系,表B跟表C也是1:n的关系,我将A的PO转给客户端,用DWR调试,发现不但会加载B还会加载C |
|
返回顶楼 | |
发表时间:2006-11-09
wiley 写道 还有一个问题是
举例说明: 如果表A跟表B是1:n关系,表B跟表C也是1:n的关系,我将A的PO转给客户端,用DWR调试,发现不但会加载B还会加载C 你的dwr.xml配置文件怎么写的 |
|
返回顶楼 | |
发表时间:2006-11-09
我现在的一个解决办法:
1、在DWR.xml配置转换POJO时指定他的属性(不指定关联的属性); 2、在处理对象的方法中,如果查询的对象是多表关联的,那么不直接返回该POJO,而是处理后,用MAP返回。 如: function Map getA(String a){ A a=this.AService.getAById(id); B b=a.getB(); HashMap<String, Serializable> hm=new HashMap<String, Serializable>(); hm.put("a",a); hm.put("b",b); return hm; } 这样二个问题都解决了,我想应该有比这个更好的方法,希望大家也谈谈自已的做法,相互学习一下 |
|
返回顶楼 | |
发表时间:2006-11-10
public class DTO{ A a; B b; .... } |
|
返回顶楼 | |
发表时间:2007-06-28
<filter>
<filter-name>hibernateFilter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> <init-param> <param-name>singleSession</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>hibernateFilter</filter-name> <url-pattern>/dwr/*</url-pattern> </filter-mapping> |
|
返回顶楼 | |
发表时间:2007-06-30
用HIBERNATE的转换器 未初始化的对象不会被翻译成JSON 爽的很。。 需要初始化的对象可在返回之前从SESSION脱钩。。
|
|
返回顶楼 | |
发表时间:2007-07-16
试过 BeanConverter么?
http://getahead.org/dwr/server/hibernate 看对你有没有帮助 |
|
返回顶楼 | |