bernate中间表配置其他字段(列) annotation不知道怎么配置~
来源:互联网 发布:网络招商 编辑:程序博客网 时间:2024/05/01 05:43
Hibernate多对多中间关系表有属性(其他字段)的配制方法
分类: J2EE2010-05-17 11:371138人阅读评论(2)收藏举报
Hibernate框架可以将面向关系的 数据库模型封装成面向对象的数据库模型,这样以来一方面了我们在具体应用中的数据库设计,另一方面又简化了我们的编码。然而在现实中我们往往会发现有些面 向关系的数据库模型转化成面向对象的数据库模型之后很难再Hibernate中 配置。比如:在多对多关系模型中,中间表往往含有自己的属性,这种情况在Hibernate中 该如何配置?我在网上查了好多资料都说将多对多拆成两个一对多的方式来解决,这样做也不错,不过我个人觉得使用起来比较麻烦,更主要的一点是这种方法将Hibernate面向对象的设计思想降低到了关系型设计,Hibernate带来的好处就只有编码方便这一点了。
下面我给大家提供一种Hibernate中 多对多关系表中有属性的使用方法。
1、Project和 Programmer的 实体关系图如下:
2、将project 、programmer、participate封装成三个实体
view plaincopy to clipboardprint?
- public class Project {
- private Integer projectId;
- private String projectNumber;
- private String projectName;
- private Map programmers;
- get..
- set..
- }
- public class Programmer {
- private Integer programmerId;
- private String programmerName;
- private Map projects;
- get..
- set..
- }
- public class Participate {
- private Date startDate;
- private Date endDate;
- get..
- set..
- }
3、配置属性文件
Project.hbm.xml
view plaincopy to clipboardprint?
- <hibernate-mapping >
- <class name="Project" table="test.tb_project">
- <id name="projectId">
- <column name="id" />
- <generator class="native"/>
- </id>
- <property name="projectNumber" >
- <column name="project_number" />
- </property>
- <property name=" projectName " >
- <column name=" project_name" />
- </property>
- <map name="programmers" table="test.tb_project_programmer" lazy="false">
- <key column="project_id" not-null="true"/>
- <map-key-many-to-many column="programmer_id" class="Programmer"/>
- <composite-element class="Participate">
- <property name=" startDate " column="start_date"/>
- <property name=" endDate " column="end_date"/>
- </composite-element>
- </map>
- </class>
- </hibernate-mapping>
Programmer.hbm.xml
view plaincopy to clipboardprint?
- <hibernate-mapping >
- <class name="Programmer" table="test.tb_programmer" lasy=”false”>
- <id name="programmerId">
- <column name="id" />
- <generator class="native"/>
- </id>
- <property name="programmerName" >
- <column name="programmer_name" />
- </property>
- <map name="projects" table="test.tb_project_programmer" lazy="false" inverse=”true”>
- <key column=" programmer _id" not-null="true"/>
- <map-key-many-to-many column="project_id" class="Project"/>
- <composite-element class="Participate">
- <property name=" startDate " column="start_date"/>
- <property name=" endDate " column="end_date"/>
- </composite-element>
- </map>
- </class>
- </hibernate-mapping>
4、你调用调试就可以了
注意:
在 其中一方要用inverse=“true”来实现控制翻转,在这一方的<calss />要添加lasy=“false”的属性,以便对方控制。
- bernate中间表配置其他字段(列) annotation不知道怎么配置~
- hibernate annotation多对多中间表添加其他字段的第三种方法
- hibernate annotation多对多中间表添加其他字段的第三种方法
- 不知道数据库字段名 怎么显示
- Hibernate中多对多的annotation的写法(中间表可以有多个字段)
- Hibernate中多对多的annotation的写法(中间表可以有多个字段)
- Hibernate中多对多的annotation的写法(中间表可以有多个字段)
- Hibernate中多对多的annotation的写法(中间表可以有多个字段)
- Hibernate中多对多的annotation的写法(中间表可以有多个字段)
- Hibernate多对多中间表有多个字段字段的注解配置方式(一)
- Hibernate多对多中间表有多个字段字段的注解配置方式(二)
- Hibernate多对多中间表有多个字段字段的注解配置方式(二)
- Hibernate多对多中间表有多个字段字段的注解配置方式(三)
- Hibernate多对多中间关系表有属性(其他字段)的配制方法
- Hibernate 多对多中间表 有其他字段映射
- hibernate笔记-017-中间表含其他字段
- 【SpringMVC】annotation配置(事务不失效)
- 你不知道的全文检索---solr安装中文分词器及配置业务字段
- IOS 入门开发之使用Xcode4制作静态库详解(五)
- hibernate annotation多对多中间表添加其他字段的第三种方法
- BM算法的个人理解
- 基于差分图像的目标跟踪(附Matlab源码)
- Hibernate中多对多的annotation的写法(中间表可以有多个字段)
- bernate中间表配置其他字段(列) annotation不知道怎么配置~
- java reflect 由参数取得对应的类的方法函数
- linux top命令详解
- 使用HashMap输出的顺序
- Camera总结
- 在windows上搭建一个SSH隧道Set up a Windows SSH tunnel in 10 minutes or less)
- Java的Socket(一)
- H.264-AVC视频编码原理及实现(一)
- android中创建有自身特色的字符串