`
zhuyuangping
  • 浏览: 38020 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

hibernate 多对 多,操作中间表

阅读更多
利用hibernate解决多对多的问题

1建立实体多对多关系Manytomany,利用hibernate去维护多对多关系,但是hibernate无提供中间表操作。
2在1的基础上,建立中间表,利用一对多关系。

这样可以在中间表添加其他属性,也可以利用hibernate多对多去维护

EG:
学生:ID,name
学科:ID,classname

中间表:sid,cid,SCORE

hibernate: @MANYTOMANY Student,Class_tb

@ManyToOne score ,



eg2:用户,会议多对多关系,中间表记录参加会议的信息

会议
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class table="djsys_netmeeting"
name="com.gdass.model.djsys.NetMeeting">
<id name="id">
<generator class="native" />
</id>
<property name="dyId" />
<property name="createName" />
<property name="orgid" />
<property name="orgname" />
<property name="title" />
<property name="startDate" />
<property name="endDate" />
<property name="flag" />
<property name="moderator" />
<property name="content" />
<property name="learndata" />
<property name="xmldatapath" />
<property name="toupiao" />
<property name="tpcon" />
<property name="determine" />
<property name="onlinedatapath" />
<property name="chengdu" />
<property name="attachment" />
<property name="seldomtime" />
<property name="noticedata" />
<!--
<map name="dangYuans" table="djsys_user_netmeet" >
<key column="nmid" not-null="true" />
<map-key-many-to-many column="dyid"
class="com.gdass.model.djsys.DangYuan" />
<composite-element
class="com.gdass.model.djsys.UserNetMeet">
<property name="looker_ornot" column="looker_ornot" />
<property name="flag" column="flag" />
</composite-element>
</map> -->
   <set table="djsys_user_netmeet" fetch="select" name="dangYuans">
      <key column="nmid"/>
      <many-to-many column="dyid" class="com.gdass.model.djsys.DangYuan"/>
    </set>

    <set name="userNetMeets" inverse="true"
cascade="all-delete-orphan">
<key column="nmid" />
<one-to-many class="com.gdass.model.djsys.UserNetMeet" />
</set>
<set name="voteTopics" inverse="true"
cascade="all-delete-orphan">
<key column="nmid" />
<one-to-many class="com.gdass.model.djsys.VoteTopic" />
</set>
</class>
</hibernate-mapping>

用户

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class table="djsys_dangyuan"
name="com.gdass.model.djsys.DangYuan">
<id name="id">
<generator class="native" />
</id>
<many-to-one name="user" column="uid" />
<many-to-one name="djorg" column="orgid" />
<property name="dangfei" />
<property name="changedate" />
<property name="username" />
<property name="rdsqdate" />
<property name="jjfzdate" />
<property name="fzdxdate" />
<property name="rdlxr" />
<set name="dyOrgs" inverse="true" cascade="all-delete-orphan">
<key column="dangYuanId" />
<one-to-many class="com.gdass.model.djsys.DyOrg" />
</set>
<set name="personAwards" inverse="true"
cascade="all-delete-orphan">
<key column="dangYuanId" />
<one-to-many class="com.gdass.model.djsys.PersonAward" />
</set>
<!--
<map name="netMeetings" table="djsys_user_netmeet">
<key column="dyid" not-null="true" />
<map-key-many-to-many column="nmid"
class="com.gdass.model.djsys.NetMeeting" />
<composite-element
class="com.gdass.model.djsys.UserNetMeet">
<property name="looker_ornot" column="looker_ornot" />
<property name="flag" column="flag" />
</composite-element>
</map> -->
    <set table="djsys_user_netmeet" fetch="select" lazy="true" name="netMeetings">
      <key column="dyid"/>
      <many-to-many column="nmid" class="com.gdass.model.djsys.NetMeeting"/>
    </set>

     <set table="djsys_user_netword" fetch="select" lazy="true" name="netWords">
      <key column="dyid"/>
      <many-to-many column="nwid" class="com.gdass.model.djsys.NetWord"/>
    </set>

</class>
</hibernate-mapping>

中间表,记录参加会议情况
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class table="djsys_user_netmeet"
name="com.gdass.model.djsys.UserNetMeet">
<composite-id>
       <key-many-to-one name="netMeeting" class="com.gdass.model.djsys.NetMeeting" column="nmid">            
         </key-many-to-one>  
      <key-property name="dyid" />
    </composite-id>

<property name="vdata" />
<property name="sdata" />
<property name="id" />
<property name="toupiao" />
<property name="ddata" />
<property name="ntype" />
<property name="cuichu" />
</class>
</hibernate-mapping>

分享到:
评论

相关推荐

    hibernate总结

    表:材料表和产品表多对多,在数据库中有中间表即产品材料表用来存放两个表之间的关系 Java类:材料PO,产品PO,中间PO,中间PO的复合主键类(由于是两个一对多形成的多对多,所以,这里只讲一个一对多,另一个是相同...

    hibernate_second5项目源码

    在上一篇的项目基础上,添加了多对多的级联操作,和操作中间表

    Struts+Spring+Hibernate快速入门

    本文是开发基于spring的web应用的入门文章,前端采用Struts MVC框架,中间层采用spring,后台采用Hibernate。  本文包含以下内容:  •配置Hibernate和事务  •装载Spring的applicationContext.xml文件  •...

    基于java,hibernate,mysql,GWT开发,采用分层设计的一个餐馆订餐管理系统

    其中一层的类和数据库中每一个表相对应并封装了一些数据库基本操作; 另外一层和中间层每一个类相对应,主要是为了将数据库层的另一层的类整合起来为第二层提供统一接口和对应方法。 它对您的作用: 1.了解分层...

    多对多建表及配置映射文件

    在实际操作中把中间表删掉在,java文件中把set集合加入直接多对多影射多表配置

    办公系统源代码(sturts2,hibernate,mysql)

    因公司存档纸质审核流程比较多,电子记录以表格形式存在,长时间的记录导致后期管理查询统计比较麻烦,现开发档案管理系统主要实现对最终归档文件的管理,因此系统忽略中间的审核过程,只实现发档部门和归档部门两头...

    Hibernate3实例

    Hibernate3实战in MyEclipse。本实例是一个最典型的实体“雇员”完整的持久化操作。借助MyEclipse工具自动生成配置文件、持久化类、映射文件和与业务逻辑之间的中间层DAO类。

    王浩(易购网站购物系统)

    使用Hibernate进行对数据库的操作。 ※ 项目使用了J2EE,javascript,jsp,mysql,Ajax等的技术来实现,以及Tomcat5.0服务器版本。 ※ 前台提供商品信息、评论的浏览,不同权限用户的登录以及查看购物车以及对购物车内...

    一个空的SSH框架,同时也支持servlet。扩展性能强,灵活度高。

    中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,Web层,负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现。 Service层(就是业务逻辑层),负责实现...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    例如数据表中用户选择字段方式的改变,用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要...

    ssh实现人力资源管理系统

    Hibernate处于该架构的持久化层,用于管理系统与数据库打交道的所有过程,实现最基本的数据库操作,以及完成数据持久化任务;而Spring处于中间层,利用其优秀的反转控制(IoC)和事物管理特性,实现表现层、业务层和...

    ssh人力资源管理系统

    Hibernate处于该架构的持久化层,用于管理系统与数据库打交道的所有过程,实现最基本的数据库操作,以及完成数据持久化任务;而Spring处于中间层,利用其优秀的反转控制(IoC)和事物管理特性,实现表现层、业务层和...

    办公管理系统

    因公司存档纸质审核流程比较多,电子记录以表格形式存在,长时间的记录导致后期管理查询统计比较麻烦,现开发档案管理系统主要实现对最终归档文件的管理,因此系统忽略中间的审核过程,只实现发档部门和归档部门两头...

    火炬博客系统7

    业务层(bussiness Layer)和持久层(Persistence Layer),使用Spring框架整合Struts和 Hibernate,用Spring的“控制反转IOC”, 或者“setter依赖注入”来操作这些对象,这些对象在一个外部的XML文件中被引用。...

    火炬博客系统6

    业务层(bussiness Layer)和持久层(Persistence Layer),使用Spring框架整合Struts和 Hibernate,用Spring的“控制反转IOC”, 或者“setter依赖注入”来操作这些对象,这些对象在一个外部的XML文件中被引用。...

    火炬博客系统5

    业务层(bussiness Layer)和持久层(Persistence Layer),使用Spring框架整合Struts和 Hibernate,用Spring的“控制反转IOC”, 或者“setter依赖注入”来操作这些对象,这些对象在一个外部的XML文件中被引用。...

    小型权限系统

    SSH0100部署在tomcat6上,sql脚本生成数据库,hibernate文件添加数据库的数据,数据库三张主表,两张中间表,不同的用户对应不同的角色,不同角色拥有不同的权限!测试时换不同的用户登录(李四拥有的权限最大,点击...

    教务管理系统(概要设计及详细设计).doc

    接口设计 2.1 用户接口 "用户接口 "语法结构 "软件回答信息 " "教务系统管理员登录 "以英文和汉字开头,不超过6个字 "进入主界面 " " "符 " " "信息管理相关操作 " "进行相应的操作" 3. 运行设计 3.1 运行模块组合 ...

Global site tag (gtag.js) - Google Analytics