JAVA学习网首页 把生活查询网加入收藏 把JAVA学习网设为首页 联系方式
    Hi,JAVA学习
JAVA基础 设计模式 数据库 JavaBeans J2EE JavaDelphi 用户界面 综合文章  
hibernate基础_7
时间:22/04/2007
作者:网络
来源:网络
小提示点这里把文章加入您的收藏夹,方便下次查看
设置文章字体大小:[ ]

同一对多映射相对应,hibernate也提供多对一的映射。

为了实现多对一映射,我构建了下面两个样例类

public class Resident2 {
    private int id;
    private String name;
    private Room2 room;
}

public class Room2 {
    private int roomNum;
    private String address;
}

可以看到,这里Resident2同Room2是多对一的关系,而这种关系是通过在每一个Resident2对象中持有一个Room2的引用来实现的。这里,用到的数据表同"hibernate基础_6"中用到的相同。

Room.hbm.xml描述符很简单

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

唯一值得注意的是unsaved-value= "0" 这句,由于要实现联级操作,所以必须得对Room的id赋值。至于为什么赋为0,大家可以参考前面的hibernate基础。

Resident.hbm.xml就比较复杂了

<many-to-one name= "room"
                     column= "roomNum"
                     class= "manytoone.Room2"
                     cascade= "all" />

其实复杂也就是多出了这么一句话。cascade说明我们需要对该映射进行联级操作。至于谁是主操作方,可以通过inverse来说明。这里没有写出,因为狠明显是要操作Resident2来实现对Room2的存储与更新。如果要写,加入inverse= "false" ,即代表Resident2为主操作方。

其他的属性描述就不再冗述了

在客户端,我们如此调用

Room2 r1 = new Room2();
r1.setAddress("minhang.sjtu.D23");

Resident2 res1 = new Resident2();
res1.setId(120);
res1.setName("D");
res1.setRoom(r1);

//res2, res3的声明类似于res1

session.save(res1);
session.save(res2);
session.save(res3);

及实现了联级存储。相信有了"hibernate基础_6"作为参考,这篇文章应该不会很难理解

不过,同"hibernate基础_6",我同样有个问题,就是Room2的id为什么必须是increment才可以联级存储成功(在我的机器上是这样的),这样局限性太大了吧。肯定是我哪里没弄好,还请了解的达人给我留个言,解答一下。


上一篇:Apache :POI-HSSF

下一篇:java中带标号的break、continue

  • J2ME移动开发平台搭建篇
  • Java嵌入技术的现状及应用前景
  • java编辑多语言的福音--推荐一个经典的多语言文件编辑的插件ResourceBundle Editor
  • javabean10118
  • jsp开发网站使用cookie的一点经验
  • 用 JFC/Swing 将可访问性构建到您的 Java 应用程序中
  • 用Socket建立简单的C/S结构的TCP/IP服务
  • Effective Java读书笔记
  • WebWork基于正则表达式(regex)的输入验证
  • buildfile实例
  • 收集的一些python程序,实用并且有趣
  • DWR之HelloWorld
  • 使用dao.Processor管理数据持久化对象
  • WebLogicServer环境下先进的JMS设计模式
  • shark工作流文档翻译活动--shark(3)
  • 一些无聊的代码之一:JAVA中的日期计算
  • webwork2在weblogic下和tomcat下的中文问题解决
  • TIJ阅读笔记(第三章)
  • 返回】 【顶部】 【关闭
    Copyright © 2005-2010 www.594k.com All Rights Reserved.
    版权所有:JAVA学习网 备案序号:皖ICP备06004238号