在使用hibernate进行类关联的时候,通常采用如下的做法:
<class
name="org.appfuse.task.model.Advertisement"
table="advertisement_t"
>
...
<many-to-one
name="resource"
class="org.appfuse.task.model.Resource"
column="resource_id"
cascade="all"
>
但是假设我们Resource对于不同的资源需要进行构造不同的子类,比如ImageResource, TextResource, HtmlResource, etc. 在web进行不同资源展现的时候,就需要针对不同资源进行不同的展现。
此时,如果直接访问某个字类的属性,就会告知没有这个属性。通过在webcontroller跟踪advertisement对象的resource属性可以发现,它不是某个字类的对象,它是Resource$EnhancerbyCglib!通过查询hibernate的文档,原来这是hibernate的many-to-one的配置:
lazy (optional - defaults to proxy): By default, single point associations are proxied. lazy="no-proxy" specifies that the property should be fetched lazily when the instance variable is first accessed (requires build-time bytecode instrumentation). lazy="false" specifies that the association will always be eagerly fetched.
原来默认的情况下使用proxy方式连接,这时候产生的不是实际的类,而是cglib代理类。只有对他的属性进行访问的时候,才会构造真正的实际类。
解决方法很简单,在many-to-one配置中增加lazy=false,就可以在页面中直接访问各子类的特殊属性啦。
相关文章:http://www.wangchao.net.cn/bbsdetail_925021.html
分享到:
相关推荐
"Hibernate one-to-many / many-to-one关系映射"是两个基本的关系类型,用于表示实体间的关联。在这个主题中,我们将深入探讨这两种关系映射的原理、配置和实际应用。 一、一对一(one-to-one)与一对多(one-to-...
many-to-one关系表示在一个实体类中,一个实例可以与另一个实体类的多个实例相关联。例如,在一个学生和班级的关系中,一个班级可以有多个学生,但一个学生只能属于一个班级。在Hibernate中,我们通过`@ManyToOne`...
关联映射的本质: 将关联关系映射到数据库,所谓的...<many-to-one>会在多的一端加入一个外键,指向一的一端,这个外键是由<many-to-one> 中的column属性定义的,如果忽略了这个属性那么默认的外键与实体的属性一致
- 在 `user.hbm.xml` 文件中,`<many-to-one>` 标签被用来定义 `User` 实体与 `Group` 实体之间的关联关系。其中,`name` 属性表示关联字段的名称,`column` 属性表示数据库表中对应的字段名。 #### Many-to-One ...
本实例将详细讲解如何在Hibernate中实现Many-to-One关系映射,这是一种常见的数据库关联,表示一个实体可以与多个其他实体相关联。 在Many-to-One关系中,通常一个实体(如部门)可以有多个相关实体(如员工),而...
#### 一、多对一关联(Many-to-One) 在本章中,我们将探讨如何在 Hibernate 中处理多对一关联。这种关联类型非常常见,在许多应用中都会遇到。例如,在一个在线书店应用中,每本书都与一个出版商关联,而一个出版...
在上面的配置中, `<many-to-one>` 标签指定了Person实体与IdCard实体之间的一对一唯一外键关联关系,其中unique="true"指定了多的一端的多重性为一。 Hibernate 一对一唯一外键关联映射的应用 在实际应用中,一对...
`<set>`标签里的`<one-to-many>`子标签指定了与之关联的类。 在XML映射文件中,`Student.hbm.xml`包含了`<many-to-one>`元素,表示学生对象引用了一个班级对象,通过`classesid`列连接。而`Classes.hbm.xml`则使用...
本文主要关注Hibernate中的一个核心概念——一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关联映射,特别是关于“一到多”单向和双向关联映射的配置心得。 首先,让我们了解“一到多”关联...
**标题与描述解析** 标题"Hibernate one to many(many to one) 配置...以上是关于Hibernate中One-to-Many和Many-to-One关联配置的基本知识。实际应用中,还需要考虑性能、并发、事务等因素,进行合理的优化和设计。
在Hibernate中实现Many-to-One关联,我们需要在实体类中定义对应的属性,并通过注解来配置关联关系。例如,如果我们有"Student"和"Course"两个实体,一个学生可以选修多门课程,但一门课程只能被一个学生选为必修: ...
在"many-to-one"关系中,一个实体可以与多个其他实体相关联。默认情况下,Hibernate会设置这种关联为懒加载,即只有当我们尝试访问被关联的对象时,才会发起数据库查询。但这种方式可能不适用于所有场景,特别是在...
标题中的“Hibernate - one to many - update”指向的是一个关于Hibernate框架中的一对多关联关系在更新操作时的专题。Hibernate是Java开发中常用的持久化框架,它简化了数据库操作,使得开发者可以更加关注业务逻辑...
在Hibernate中,`one-to-many`关系是常见的实体间关系之一,表示一个实体可以与多个其他实体相关联。本文将深入探讨`Hibernate one-to-many`注解的使用和实现细节。 ### 一、`@OneToMany`注解概述 `@OneToMany`...
本示例将详细讲解如何在Hibernate中实现多对多(many-to-many)的关系映射。 在数据库设计中,多对多关系是指两个实体之间存在多个关联,比如学生和课程的关系,一个学生可以选修多门课程,一门课程也可以被多个...
在Java的持久化框架Hibernate中,"Many-to-One"关系是一种常见的关联映射类型,它表示一个实体(类)可以与多个其他实体实例相关联。在这个主题中,我们将深入探讨Hibernate如何处理这种关系,以及如何在实际编程中...
在`Course`的映射文件中,我们使用`<set>`元素来表示课程可以对应多个选课记录(StuCourse),并用`<one-to-many>`指定关联的类是`StuCourse`。同时,`<key>`元素指定了外键字段`course_id`,它对应于`Course`的主键...
同时,`Account.hbm.xml`中的`many-to-one`元素将`column`属性设置为`FID`,表示通过`FID`字段关联到`User`实体。 #### 测试场景解释 在测试场景中,我们创建了一个`User`对象和一个`Account`对象,并在`User`对象...