Hibernate集合映射
可以在Hibernate中映射持久类的集合元素。 您需要从以下类型之一声明持久类中的集合类型:
- java.util.List
- java.util.Set
- java.util.SortedSet
- java.util.Map
- java.util.SortedMap
- java.util.Collection
- 或写入
org.hibernate.usertype.UserCollectionType的实现
持久化类应该像这样定义为collection元素,如下代码示例 -
package com.yiibai;
import java.util.List;
public class Question {
private int id;
private String qname;
private List<String> answers;//List can be of any type
//getters and setters
}
映射文件中的映射集合
有很多<class>元素的子元素用来映射集合。 它们是<list>,<bag>,<set>和<map>。 下面来看看看如何实现上述类的列表:
<class name="com.yiibai.Question" table="q100">
<id name="id">
<generator class="increment"></generator>
</id>
<property name="qname"></property>
<list name="answers" table="ans100">
<key column="qid"></key>
<index column="type"></index>
<element column="answer" type="string"></element>
</list>
</class>
列表中使用了三个子元素:
<key>元素用于根据Question类标识符定义该表中的外键。<index>元素用于标识类型。List和Map是索引集合。<element>用于定义集合的元素。
这是集合存储字符串对象的映射。 但是如果集合存储实体引用(另一个类对象),我们需要定义<one-to-many>或<many-to-many>元素。 现在,持久化类将如下所示:
package com.yiibai;
import java.util.List;
public class Question {
private int id;
private String qname;
private List<Answer> answers;//Here, List stores the objects of Answer class
//getters and setters
}
Answer类代码示例如下 -
package com.yiibai;
import java.util.List;
public class Answer {
private int id;
private String answer;
private String posterName;
//getters and setters
}
现在映射文件将是:
<class name="com.yiibai.Question" table="q100">
<id name="id">
<generator class="increment"></generator>
</id>
<property name="qname"></property>
<list name="answers" >
<key column="qid"></key>
<index column="type"></index>
<one-to-many class="com.yiibai.Answer" />
</list>
</class>
这里,列表被一对多关系映射。 在这种情况下,一个问题可以有很多答案。
key元素
key元素用于根据原始身份在连接的表中定义外键。 外键元素默认为空。 所以对于不可空的外键,需要指定not-null属性,如:
<key column="qid" not-null="true" ></key>
key元素的属性是column,on-delete,property-ref,not-null,update和unique。
<key
column="columnname"
on-delete="noaction|cascade"
not-null="true|false"
property-ref="propertyName"
update="true|false"
unique="true|false"
/>
索引集合
集合元素可以分为两种形式:
- 索引,和
- 非索引
List 和 Map集合都可被索引,而集合和行集合是非索引的。 这里,索引收集 List 和 Map需要一个额外的元素<index>。
集合元素
集合元素可以具有值或实体引用(另一个类对象)。可以使用4个元素之一。
elementcomponent-elementone-to-many, 或many-to-many
element 和 component-element 用于正常值,例如string,int等,而一对多和多对多用于映射实体引用。
在接下来的文章,我们将学习集合映射。
映射列表(List)
在这个例子中,我们将映射List元素。
映射Bag
在这个例子中,我们将使用Hibernate框架的包集合。
映射集合(Set)
在这里,我们将映射Set的集合元素。
Hibernate集合映射的更多相关文章
- hibernate集合映射inverse和cascade详解
hibernate集合映射inverse和cascade详解 1.到底在哪用cascade="..."? cascade属性并不是多对多关系一定要用的,有了它只是让我们在插入或 ...
- Hibernate 集合映射 一对多多对一 inverse属性 + cascade级联属性 多对多 一对一 关系映射
1 . 集合映射 需求:购物商城,用户有多个地址. // javabean设计 // javabean设计 public class User { private int userId; privat ...
- hibernate集合映射inverse和cascade详解<转载>
1.到底在哪用cascade="..."? cascade属性并不是多对多关系一定要用的,有了它只是让我们在插入或删除对像时更方便一些,只要在cascade的源头上插入或是删除,所 ...
- Hibernate 集合映射
Set映射: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mappi ...
- 【抽时间 试验】hibernate集合映射inverse和cascade详解
http://www.cnblogs.com/amboyna/archive/2008/02/18/1072260.html
- Hibernate的集合映射与sort、order-by属性
[Hibernate]Hibernate的集合映射与sort.order-by属性 常用集合Set.List.Map,相信大家都很熟悉,面试中也会经常问.Set和List都继承了Collection接 ...
- Hibernate征途(七)之复合主键映射和集合映射
把这两种映射放到一起说,是因为这两种映射不像前面的复用型映射.数量和方向型映射那么分类鲜明,所以放到了这个“其他”里面. 复合主键映射 在关系模型中,复合主键和其他的主键方式没有很大区别,但是反映到对 ...
- HIbernate学习笔记(七) hibernate中的集合映射和继承映射
九. 集合映射 1. Set 2. List a) @OrderBy 注意:List与Set注解是一样的,就是把Set更改为List就可以了 private List< ...
- Hibernate的集合映射(Set、List、Array、Map、Bag)
POJOs如下: Customer类------>customer表 Order类对应---------->orders表 customer(1)<-------------- ...
随机推荐
- nobr 不换行标签
示例代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...
- 部署web Service到tomcat
建立项目 打开jdeveloper 12c,然后新建一个java项目,点击java,生成web services. package simple; import javax.jws.WebMethod ...
- vue2组件之异步组件...resolve
看开源项目的时候看到这样的用法: 发现与之前定义组件的方式不一样,这个resolve又是什么? 原来这个是vue的异步组件实现,可以看这里:<异步组件> 异步组件的需求: 在大型应用中,我 ...
- Java Web---登录验证和字符编码过滤器
什么是过滤器? 在Java Web中,过滤器即Filter.Servlet API中提供了一个Filter接口(javax.servlet.Filter).开发web应用时,假设编写的Java类实现了 ...
- XAMPP Apache + MySQL + PHP + Perl
XAMPP Apache + MySQL + PHP + Perl 什么是XAMPP? XAMPP是最流行的PHP开发环境 XAMPP是完全免费且易于安装的Apache发行版,其中包含MySQL.PH ...
- 用BSF + Beanshell使Java程序能够运行字符串形式的代码(转载)
BSF(Bean Scripting Framework)最初是IBM Alpha工作组的项目,后来贡献给了Apache,BSF使Java能够更好的与各种流行脚本语言整合,实现不同语言之间的交互功能. ...
- struts上传文件 血案
记录一个图片上传之后没有后缀 拓展名问题 平常我们查询数据都是 fileImage=fileImageService.getQuery(); 让entity等于它 那么fileImage.getF ...
- csv导出文件中有html
最近遇到再导出csv文件时,csv文件中包含html代码 一开始以为导出的数据量太大,减少数据后仍然出现html代码,此时想到应该与数据有关,仔细观察csv中的数据,有的单元里面是空值, 对比原始数据 ...
- css学习之overlay
CSS Overlay技巧 作者:大漠 日期:2013-11-10 点击:8 本文由大漠根据SARA SOUEIDAN的<CSS OVERLAY TECHNIQUES>所译,整个译文带 ...
- MVC 的八个扩展点
Asp.net MVC中常用的八个扩展点并举例说明. 一.ActionResult ActionResult代表了每个Action的返回结果.asp.net mvc提供了众多内置的ActionResu ...