Answer类为Question类一对多关联关系,即一个问题对应多个答案。他们的表结构如下
如果希望Answer集合在Question类中作为List存储,我们可以使用hibernate的list或者bag标签来进行映射。
当使用list标签映射时,Question.hbm.xml中的配置如下:
Java代码
<hibernate-mapping>
<class name="mypackage.Question" table="question">
<id name="id" type="integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="userId" type="integer">
<column name="user_id" />
</property>
<property name="content" type="string">
<column name="content" length="200" />
</property>
<property name="time" type="timestamp">
<column name="time" length="19" />
</property>
<list name="answers" inverse="true" cascade="all" lazy="false">
<key column="question_id" not-null="true"/>
<index column="position" />
<one-to-many class="com.skyseminar.meeting.db.TMeetingAnswer"/>
</list>
</class>
</hibernate-mapping>
list标签中,key元素表示Answer表通过外键question_id参照Question表。
因List集合是个有序的集合,所以要使用<index column="position"/>来标明其顺序。(position为Answer表中附加字段)
因此在插入更新时便需要维护position字段,否则索引设置错误,取出的数据就会出现空值情况。
而是用bag标签映射list集合,则无需维护多余的字段。因此使用Hibernate进行一对多映射时,选择使用bag标签更佳。值得注意的是bag集合对象为无序排列,如果需要排序,可以使用order-by标签。
bag标签使用格式如下:
Java代码
<bag name="answers" order-by="id asc" lazy="false">
<key column="question_id" />
<one-to-many class="mypackage.Answer"/>
</bag>
分享到:
相关推荐
Hibernate容器映射技术(Set、List、Map)
**标题:“Hibernate List集合映射”** 在Java的持久化框架Hibernate中,集合映射是将数据库中的表与Java对象的集合属性关联的过程。...理解和熟练掌握List映射的配置和操作,对于进行高效、稳定的ORM编程至关重要。
这种映射可以通过集合类型如List、Set等来表示子项的集合。 2. **多对多关联映射**: 多对多关联是两个实体之间都可以有多个匹配项的情况,比如学生和课程的关系。在Hibernate中,我们可以使用`@ManyToMany`注解来...
本文将详细探讨如何使用Hibernate映射集合属性List,以及如何让Hibernate自动创建对应的数据库表,无需手动编写SQL语句。 首先,我们需要理解Hibernate的映射机制。Hibernate通过ORM(对象关系映射)技术将Java对象...
Hibernate支持多种集合映射类型,包括List、Set、Map、Bag、Array等。它们之间的区别主要在于元素的唯一性、顺序性和映射到数据库的实现方式。例如,List和Array维护元素的插入顺序,而Set不允许重复元素;Map则...
在Hibernate中,我们可以使用集合类(如List、Set、Map等)来映射这些关系。例如,一个学生可以有多次成绩记录,这就构成了一个学生到成绩的映射关系,通常我们使用Map来表示这种关系,因为Map能确保每个学生都有...
本文将深入探讨Hibernate中的四种主要集合映射类型:Set、List、Array和Map,以及它们在实际开发中的应用场景和配置。 一、Set集合映射 Set集合映射是最常见的映射类型,它不允许重复元素。在Hibernate中,Set通常...
在Java的持久化框架Hibernate中,数组映射是一种常见的数据模型转换方式,它允许我们将数据库中的数据以数组的形式存储在Java对象中。本篇将详细探讨`hibernate array 数组映射`的相关知识点,包括其原理、配置、...
**hibernate映射与查询** Hibernate 是一个流行的 Java 应用程序开发框架,它提供了一个持久层解决方案,简化了数据库操作。对于初学者来说,理解 Hibernate 的映射和查询机制是至关重要的,因为它们构成了 ...
Hibernate 集合映射详解 Hibernate 是一个流行的Java持久化框架,它提供了多种集合映射类型,以满足不同的业务需求。在 Hibernate 中,集合映射是指将 Java 集合类型与数据库表之间的映射关系。常见的集合映射类型...
在IT行业中,数据库管理和对象关系映射(ORM)框架是至关重要的组成部分,特别是对于Java开发者而言,Hibernate是一个广泛使用的ORM工具。本篇文章将深入探讨如何在Hibernate中映射树形结构,这是一种处理复杂数据...
对于数组和集合,如List、Set、Map等,Hibernate提供了ListType、SetType、MapType等映射类型,可以根据实际需求选择。 此外,自定义对象的映射是Hibernate映射中的一个重要部分。通过在实体类上使用@Entity注解,...
例如,`<set>`用于映射Java集合到数据库的表,`<list>`映射到有序的列表,`<map>`映射到键值对,`<bag>`则用于无序集合。每个集合映射都可以配置元素类型、排序规则以及关联的表。 在配置中,我们还需要关注懒加载...
在 Hibernate 映射中,需要使用 `one-to-one` 元素,并设置 `constrained="true"`,表明该类的主键由关联类生成。 3. Hibernate 一对一连接表单向关联: 这种关联方式是通过额外的连接表来实现一对一关系的。连接...
在Hibernate的映射文件(.hbm.xml)中,我们通常使用`<set>`, `<list>`, `<map>`等标签来定义集合映射。每个标签都有对应的属性,例如: - `name`: 对象属性名。 - `table`: 所映射的数据库表名。 - `inverse`: ...
Hibernate 支持多种集合类型,如 List、Set、Map 等,它们可以作为一对多或多对多关系的容器。`@ElementCollection` 用于映射非实体类属性的集合,而 `@OrderColumn` 可以指定集合元素的排序方式。 6. **级联操作 ...
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...
List映射通常通过`<list>`标签来实现,其中可以包含`<key>`、`<index>`和`<one-to-many>`等子标签,分别用于指定主键字段、索引字段和关联的实体类。 #### Set映射 与List不同,Set在Hibernate中主要用于去除重复...
通过`set`、`list`、`map`等集合节点实现一对多的关联映射,其中`inverse`属性用于控制关联关系的维护方。 #### 7. 多对一关联 `many-to-one`节点表示多对一的关系,通常涉及外键引用。 #### 8. 多对多关联 `...