Answer类为Question类一对多关联关系,即一个问题对应多个答案。他们的表结构如下
如果希望Answer集合在Question类中作为List存储,我们可以使用hibernate的list或者bag标签来进行映射。
当使用list标签映射时,Question.hbm.xml中的配置如下:
<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标签使用格式如下:
<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,用于映射集合属性 List Hibernate 自动生成表 不需sql
hibernate集合的映射 集合的映射 set list array map
NULL 博文链接:https://lijunabc.iteye.com/blog/443305
Hibernate常见集合映射(Set,List_Array,Map,Bag)
这里总结了一些Hibernate中的List信息的配置
主要介绍了Java的Hibernate框架中的List映射表与Bag映射,Hibernate是Java的SSH三大web开发框架之一,需要的朋友可以参考下
适合初学者了解在hibernate中配置set,list,map,bag等集合映射
-Hibernate容器-Hibernate容器映射技术(Set、List、Map)(1)映射技术-Hibernate容器映射技术(Set、List、Map)(1)(Set、List、Map)(1)
本速查表没有打成CHM! Hibernate实体映射表实用性较强! 希望大家喜欢!
06 06Hibernate_Collection : Hibernate的容器映射技术,包括list、set和map等。用法大体一致,数据库中的两张表,在实体层设计和配置文件都只有一个 其中数据库用到级联删除。配置文件分别用list、set和map元素...
2.4.3 Hibernate映射类型接口 2.4.4 可供扩展的接口 2.5 小结 2.6 思考题 第3章 第一个Hibernate应用 3.1 创建Hibernate的配置文件 3.2 创建持久化类 3.3 创建数据库Schema 3.4 创建对象-关系映射...
22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 ...
Hibernate 映射 17.3. Hibernate 代码 18. 示例:不同的映射 18.1. 雇员/雇主(Employer/Employee) 18.2. 作者/著作(Author/Work) 18.3. 客户/订单/产品(Customer/Order/Product) 19. 最佳...
22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 ...
22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 ...
6.1.4 映射list 6.1.5 映射map 6.1.6 排序集合和有序集合 6.2 组件的集合 6.2.1 编写组件类 6.2.2 映射集合 6.2.3 启用双向导航 6.2.4 避免非空列 6.3 用注解映射集合 6.3.1 ...
If you like to contribute to a particular translation, contact us on the Hibernate developer mailing list. Translator(s): RedSaga Translate Team 满江红翻译团队 <caoxg@yahoo.com> 在今日的企业环境...
22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 ...