Java

本类阅读TOP10

·使用MyEclipse开发Struts框架的Hello World!(录像1)
·Tomcat5.5.9的安装配置
·Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
·hibernate配置笔记
·构建Linux下IDE环境--Eclipse篇
·linux下Tomcat 5.0.20 与 Apache 2 安装/集成/配置
·AOP编程入门--Java篇
·创建文件夹和文件的java代码范例
·Java常见面试题(含答案)
·Java编写的计算器程序及源代码

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
hibernate基础_6

作者:未知 来源:月光软件站 加入时间:2005-6-5 月光软件站

hibernate的一对多映射可以通过几种方式实现,这里介绍通过set来实现的方法(可以参考前面的set,list,map映射)

这里,我为该映射构建两个类Room和Resident,标志代码如下:

public class Room {
    private int roomNum;
    private String address;
    private Set residents = new HashSet();
}

public class Resident {
    private int id;
    private String name;
}

通过Room中的residents,我们将在一个Room对应的表象中存储多个Resident的数据。

对应的Resident.hbm.xml很简单

<id name= "id" column= "id" unsaved-value= "0" >
       <generator class= "increment"  />
       <!-- why must be increment -->
</id>

同其他持久化类不同的是,只要声明unsaved-value就可以在Resident类中实现联级的存储。至于为什么要unsaved-value= "0" ,建议你去前面几篇基础看一下相应的解释

比较重要的是Room.hbm.xml,因为它包含了有关set映射及联级等的描述。Room.hbm.xml中重要部分如下

<set name= "residents" table= "resident" order-by= "id desc"
      cascade= "all" inverse= "false" >
      <key column= "roomNum" />
      <one-to-many class= "onetomany.Resident" />
</set>

在set的描述中,order-by= "id desc"对应了加入set中的Resident是按照id降序排列的,在Resident对应的表中可以清楚地看到。cascade= "all" 说明任何针对Room的操作都会对相应的Resident起作用。inverse= "false" 则说明了这里的联级要交给Room而不是Resident来处理。

<one-to-many class= "onetomany.Resident" />

这句是区别与set映射最大的地方。说明了对应于“多”这一项的类。

执行的时候,只要存储Room即可实现相应的联级存储

session.save(room);

看完了以上介绍,想必应该对一对多映射有了一定的初步了解。其实这个一对多的例子还不是很好,因为始终不能将“多”这一类的id改为asignment,否则会出现存储错误。如果哪位解决了,或者知道这是为什么,请恢复一下,呵呵,还请指点。




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有