今天在给两个表实现一对多单向关联的时候遇到了这样的错误信息:
could not initialize proxy - the owning Session was closed
于是GOOGLE搜索,发现原因是使用了延迟加载,顿感奇怪了,我并没有设置lazy为true,怎么就产生延迟加载的错误了呢?
记得lazy 默认应该是false,明明已经是false了,难道还真得明写出来吗?结果实在没办法了,加了上去试试,居然好了!
,不知道该怎么骂自己才好。一直以来都误以为lazy默认为 false,现在才注意到,原来关联里的lazy 对应有proxy false true三个值,默认为proxy,也就是说默认情况下关联是要经过代理的。而现在做的东西里的配置文件里并没有使用代理,所以出问题了。而以前做的东西里,DAO类都使用了代理的,这与lazy默认为 proxy正好对上了,所以以前从来不考虑设置lazy也一样能不出问题。(不知道自己这么理解到底正确不正确
)比如以前都这么配置(使用了代理):
java 代码
- <bean id="articleDaoProxy"
- class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
- <property name="transactionManager" ref="transactionManager" />
- <property name="target" ref="articleDao" />
- <property name="transactionAttributes">
- <props>
- <prop key="*">PROPAGATION_REQUIRED</prop>
- </props>
- </property>
- </bean>
总之以后再遇到类似这样的问题,就该想到把lazy="false"加上,禁用延迟加载。比如:
java 代码
- <many-to-one name="cst_type" class="com.longs.logistics.entity.Category" column="category_id" cascade="save-update" lazy="false"/>
但是lazy有时候还是得设置为true或者代理比较好,具体问题具体分析好了
分享到:
相关推荐
这种方法能够确保在进行一对多关联查询时,分页操作不仅作用于主表,同时也适用于关联的子表,从而避免数据不一致的问题。 总结一下,解决MySQL一对多关联查询分页错误的关键在于正确处理分页逻辑,将分页操作融入...
在Hibernate中,一对多关联表示一个实体可以与多个其他实体相对应。例如,一个学生可以对应多个课程,而一个课程可能有多个学生。这种关联可以通过在实体类中定义List、Set等集合属性来实现,并使用`@OneToMany`注解...
一对多关联意味着一个实体可以与多个另一个实体相关联。例如,`Teacher`可以有多个`Student`: ```java @Entity @Table(name="Teacher") public class Teacher { @OneToMany(mappedBy = "teacher") private Set...
在Java的持久化框架Hibernate中,一对多关联映射是一种常见的关系映射方式,它用于表示一个实体(如用户)可以拥有多个子实体(如订单)的情况。在本篇文章中,我们将深入探讨如何实现双向关联的一对多映射,以及在...
首先,我们要明白一对多关联意味着一个实体可以拥有多个关联的实体。在数据库中,这通常通过外键实现,即在一个表中有一个字段指向另一个表的主键。在Java中,我们可以使用`@OneToMany`和`@ManyToOne`注解来建立这种...
在数据库设计中,多对多关联表示两个表之间的关系,如学生和课程的关系,一个学生可以选修多门课程,而一门课程也可以被多个学生选修。在Hibernate中,这种关系需要通过中间表(也称为关联表或连接表)来实现,它...
1. **共享主键**:这是通过让两个实体类共享同一个主键字段来实现一对一关系的方法。这通常意味着一个实体类的主键同时是另一个实体类的外键。在XML映射文件中,可以使用`<one-to-one>`标签来声明这种关系: ```xml...
在数据库中,一对多关联意味着一个表中的记录可以与另一个表中的多个记录相关联。例如,一个学生可以注册多个课程,这就是“学生”和“课程”之间的一对多关系。在Hibernate中,我们可以通过配置XML映射文件或使用...
首先,让我们理解一对多关联映射。在数据库中,一对多关系意味着一个表中的记录可以与另一个表中的多个记录相关联。在Hibernate中,这可以通过在实体类中使用`@OneToMany`注解来实现。该注解定义了一个实体可以拥有...
在这种情况下,如何在thinkPHP5框架下实现跨服务器、跨数据库的表关联查询便成为了一个值得探讨的问题。 #### 一、背景介绍 假设存在两台服务器:服务器A和服务器B,其中服务器A部署了数据库A,主要用于存储用户...
在提供的链接中,可以找到更多关于Hibernate一对多关联的实例和详细解释,包括如何在XML映射文件中配置这些关系。通过深入学习和实践,开发者能够熟练地在项目中运用Hibernate的一对多关联,提高开发效率和代码质量...
这种方法可以有效地解决一对多关联查询中取最新数据的问题,但需要注意的是,如果多个订单具有相同的最新创建时间,这个查询可能会返回多行结果。为了避免这种情况,可能需要额外的策略,例如添加一个订单ID作为排序...
二、一对多关联映射 1. 定义:在数据库中,如果一个表中的记录可以对应另一表中的多个记录,那么这种关系就是一对多关系。在Hibernate中,可以通过在实体类上添加`@OneToMany`注解来实现这种映射。 2. 实现方式:...
在Hibernate中,多对多关联通常通过一个中间表来实现,这个中间表包含了两个关联实体的外键。在映射文件或注解中,我们需要定义两个双向的OneToMany关系,分别代表两个实体间的关联。例如,假设我们有`User`和`Role`...
在数据库设计中,关系模型允许实体之间存在多种联系,而多对多关联是最复杂也是最灵活的一种关系类型。它表示一个实体可以与多个其他实体相关联,反之亦然。在本文中,我们将深入探讨这种关联的实现、其优缺点以及在...
随着信息技术的快速发展,多源航迹关联问题成为信息融合领域的一个重要课题。在军事、航空、交通管理等多个领域中,有效地解决多源航迹关联问题是提升系统性能的关键。传统方法在特定场景下能够较好地工作,但在面对...
在Java的Hibernate框架中,多对一关联是指一个实体(如表)可以与另一个实体有多条关联,而另一个实体(被关联方)只有一条对应的关联。例如,一个学生可以属于多个班级,但一个班级只有一个班主任。在代码中,这...
这种方法适合于字典表与源表之间存在一对一或一对多的关系。 3. MERGER.JOIN方法 MERGER.JOIN方法类似于SQL中的LEFT JOIN操作,它能处理更复杂的关联情况。首先,使用表输入步骤读取源表和字典表,然后使用MERGER....
一对多虚拟串口技术是一种通信解决方案,它允许一个物理串行端口(COM口)同时与多个虚拟串行端口进行交互。这种技术在需要扩展串口通信能力或需要将一个物理串口的数据分发到多个设备时非常有用。下面我们将深入...