0 0

郁闷,明天项验收了!hibernate session was close关闭 lazy问题~!!!10

List helps = cahm.findAll();
		
			
	for (int i = 0; i < helps.size(); i++) {
		vcah = (VmaeCoverageAreaHelp) helps.get(i);
		Set vmaeCoverageAreas = vcah.getVmaeCoverageAreas();
		for (Iterator iter = vmaeCoverageAreas.iterator(); iter.hasNext();) {
                            \\当通过一的一端加载多的一端时 报错 session was close 我用的默认lazy=“true”
			VmaeCoverageArea vmaeCoverageArea = (VmaeCoverageArea) iter.next();
			System.out.println(vmaeCoverageArea.getIsOk());
			
				}
			}


<id name="id">
	<generator class="native"/>
		</id>
		<property name="site"></property>
		<property name="flong"></property>
		......
		<set name="vmaeCoverageAreas" inverse="true" cascade="all">
			<key column="coverageareahelpid"/>
			<one-to-many class="com.mrg.vmae.model.VmaeCoverageArea" />
		</set>
	</class>





 <class table="Vmae_CoverageArea" name="com.mrg.vmae.model.VmaeCoverageArea" schema="VMAE2" >
    <id name="id">
      <generator class="native"/>
    </id>
    .......
     ........
    ..........
 
  	<many-to-one class="com.mrg.vmae.model.VmaeCoverageAreaHelp" name="vmaeCoverageAreaHelp" column="coverageareahelpid" cascade="all" fetch="select"  />





明天项目就验收了 现在居然还有这样的问题没解决 急啊~~~

我的项目是基于swing + spring +hibernate的  事务我用的sping的声明式事务 Manager中注入dao进行持久化操作
我这两个类现在可以级联删除 和保存都没问题  但是 现在想要通过一的一端来加载多一端的对象的时候 就出现session的 问题
好像是当我把一那端对象查上来后 session 就已经关闭了 所以我再去加载多的一端就会报错 因为用了声明式事务 而且做了级联 所以现在想不到什么办法能解决我现在遇到的这个问题 郁闷啊  默认lazy是true的  但是我把lazy设成false 也不行
而且当我用 hibernate.initalize(VmaeCoverageArea) 强制加载多的一端也不行 ···
麻烦那位高手能给指点一下 感激不尽啊!!!

问题补充:
先感谢一下楼下的两位
TO xmldb
open session in view 的模式好像只能用在web 工程下面吧 我现在的项目是没法用的

因为我用的是spring 声明式事务 所以
事务那块不是由我来控制的 当我调用dao层进行增删该查的时候 事务以及session spring替我管理了 我用了 HibernateTemplate进行持久化操作

不过功能实现的
问题我已经解决了 换个思路就好了
我只是不能从一的一端加载上多一端的对象 但是我可以拿到一的一端的对象
所以我就可以把一的一端的对象的id 当作查询条件 去查多的一端的数据 这样也能取出多一端的数据
但是

那个session was close的问题我还是没搞明白
2008年7月09日 18:01

4个答案 按时间排序 按投票排序

0 0

你设置了lazy=true那么在加载的时候并没有加载你的VmaeCoverageAreaHelp,当调用Iterator的时候才正真发出sql去加载,估计在你的cahm.findAll()方法中session已经关闭了,所以会出现session is close 的异常,延迟加载只能在session没有关闭的情况下起作用

2008年7月11日 01:43
0 0

http://forum.hibernate.org/viewtopic.php?t=940119&postdays=0&postorder=asc&start=15&sid=5b183ae210a5b3cc01b32b5fbe7d4333

建议不要使用一对多,多对一的映射

2008年7月10日 11:04
0 0

贴你所谓事务的配置. 大家才好帮你呀.

2008年7月09日 18:34
0 0

用open session in view

2008年7月09日 18:03

相关推荐

    Hibernate(session管理)

    完成操作后,务必调用Session的close()方法关闭Session,释放数据库连接,防止资源泄露。 3. **事务管理**:在Session中进行的数据库操作通常需要包裹在Transaction中。我们可以使用Session的beginTransaction()...

    hibernate 中的lazy属性祥解.txt

    在探讨Hibernate框架中的`lazy`属性时,我们深入解析了其功能、应用场景以及与之相关的潜在问题,尤其关注于如何有效利用此特性以优化数据库性能和应用响应速度。 ### Hibernate框架简介 Hibernate是一个开放源码...

    hibernate在集合上的lazy策略

    在Java的持久化框架Hibernate中,懒加载(Lazy Loading)是一种优化策略,它允许我们推迟对关联对象的加载,直到真正需要它们的时候。标题“hibernate在集合上的lazy策略”指的是Hibernate如何处理与实体相关的集合...

    gilead hibernate lazyload例子

    《Gilead与Hibernate懒加载在Flex中的应用实践》 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,随着应用程序的复杂性增加,数据量庞大的时候,如何有效地管理...

    Hibernate延时加载与lazy机制.doc

    Hibernate的延迟加载(Lazy Loading)和懒加载机制(Lazy Initialization)是优化ORM框架性能的重要策略。这个机制的主要目的是提高程序的效率,减少不必要的数据库交互,只在真正需要数据时才去加载它们。以下是对...

    Dwr+Hibernate的Lazy问题

    标题中的"Dwr+Hibernate的Lazy问题"涉及到两个主要技术:Direct Web Remoting (DWR) 和 Hibernate。DWR 是一种让 JavaScript 在浏览器中直接调用服务器端 Java 方法的技术,而 Hibernate 是一个流行的Java持久化框架...

    Hibernate lazy延迟加载

    2. **初始化时机**:懒加载只能在session打开状态下工作,一旦session关闭,尝试访问懒加载属性将会抛出`LazyInitializationException`异常。因此,需要确保在业务逻辑中合理安排初始化关联数据的时间点。 3. **透明...

    hibernate的lazy策略forClass

    这个问题通常发生在Session关闭之后,因为Hibernate依赖Session来执行延迟加载。 为了解决这个问题,可以有以下几种策略: 1. 将查询范围扩大,避免在Session关闭后访问懒加载属性。 2. 使用Open Session In View...

    过滤器对于session周期的控制

    然而,这也意味着如果Session在加载懒加载属性之前已经关闭,则会导致`HibernateException`(具体为`org.hibernate.LazyInitializationException`)。因此,正确地管理Session的生命周期对于实现Lazy Loading至关...

    Hibernate lazy加载FOR Connection

    标题中的“Hibernate lazy加载FOR Connection”指的是Hibernate框架中的一种特性,即懒加载(Lazy Loading)。在Hibernate中,懒加载是一种优化策略,它推迟对关联对象的加载,直到真正需要使用这些对象时才进行加载...

    当设置lazy=true时,怎样使用extjs和Hibernate

    当我们设置Hibernate中的实体属性`lazy=true`时,这是懒加载(Lazy Loading)机制的体现。懒加载是一种优化策略,它允许我们在需要时才加载关联的对象,而不是在初始加载实体时就加载所有关联数据,从而提高性能。 ...

    hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法

    Hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法是 Hibernate 框架中的一种常见问题。当我们在 Hibernate 中使用懒加载特性时,可能会遇到 LazyInitializationException 异常,这是因为 Hibernate 的 ...

    hibernate在单端关联上的lazy策略

    3. **初始化问题**:懒加载在实体已经脱离Session时无法工作,因为Hibernate需要Session来执行延迟的SQL查询。这可能导致“LazyInitializationException”。为避免这种情况,可以使用Open Session in View(OSIV)...

    J2EE利用Hibernate采用B/S架构网页设计

    * Close the single hibernate session instance. * * @throws HibernateException */ public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); ...

    hibernate aip hibernate aip

    Hibernate AIP,全称为Hibernate Application Integration Process,是Java开发领域中使用Hibernate框架进行应用程序集成的一种实践过程。Hibernate作为一款强大的对象关系映射(ORM)工具,极大地简化了Java应用...

    hibernate的jar包

    session.close(); ``` 以上就是关于Hibernate框架及其jar包的基本介绍。在实际项目开发中,结合Maven或Gradle等构建工具管理依赖,可以更方便地引入和使用Hibernate。通过熟练掌握Hibernate,开发者可以极大地提高...

    hibernate学习资料大全

    延迟加载(Lazy Loading)是Hibernate的一项重要特性,允许我们在真正需要时才加载关联对象,从而避免了“大数据量”的一次性加载。理解并合理运用懒加载,可以避免内存溢出。 10. **性能优化**: Hibernate 提供...

    集成spring的hibernate懒加载

    当你尝试在Controller层或者视图层访问懒加载的属性时,如果Session已经关闭("no Session..."错误),就会抛出`org.hibernate.LazyInitializationException`。这是因为懒加载的代理对象需要Session来执行数据库查询...

    hibernate小白极简实例

    session.close(); ``` 7. **查询(Query)** 使用`Session`的`createQuery()`或`getNamedQuery()`方法执行HQL(Hibernate Query Language)或SQL。例如,获取所有用户: ```java String hql = "from User"; ...

    hibernate

    根据提供的文件信息,我们可以深入探讨Hibernate框架中的几个关键概念,特别是`fetch`, `lazy`, `cascade`, 和 `inverse`关键字的使用与理解。这四个概念在处理对象关系映射(ORM)时非常重要,尤其是在Java环境下...

Global site tag (gtag.js) - Google Analytics