hibernate多对多关系配置,怎样实现新增中间表数据。

zhiquan911 2011-08-11 09:00:14
有3个表,“医院表”,“病种表”形成多对多关系,中间表为“开通表设置”

T_HOSPITAL_INFORMATION(医院表):
id
serial_number(医院编号)
....
-----------------
T_FATAL_DISEASES_DIRECTORY(病种表):
id
serial_number(病种编号)
-------------------------
T_FATAL_DISEASES_SET(开通表设置):
id
hospital_number(医院编号)
disease_number(病种编号)

映射表已配置

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="myclass.database.tablemapping.TFatalDiseasesDirectory" table="T_FATAL_DISEASES_DIRECTORY" schema="SA">
<id name="id" type="java.lang.Long">
<column name="ID" precision="20" scale="0" />
<generator class="sequence">
<param name="sequence">T_FATAL_DISEASES_DIRECTORY_SEQ</param>
</generator>
</id>
<property name="serialNumber" type="java.lang.String">
<column name="SERIAL_NUMBER" length="20" />
</property>
<property name="name" type="java.lang.String">
<column name="NAME" length="200" />
</property>
<property name="note" type="java.lang.String">
<column name="NOTE" length="1000" />
</property>
<property name="disable" type="java.lang.String">
<column name="DISABLE" length="1" />
</property>
<property name="creatorNumber" type="java.lang.String">
<column name="CREATOR_NUMBER" length="20" />
</property>
<property name="creatorTime" type="java.lang.String">
<column name="CREATOR_TIME" length="20" />
</property>
<property name="modifyNumber" type="java.lang.String">
<column name="MODIFY_NUMBER" length="20" />
</property>
<property name="modifyTime" type="java.lang.String">
<column name="MODIFY_TIME" length="20" />
</property>
<property name="disableNumber" type="java.lang.String">
<column name="DISABLE_NUMBER" length="20" />
</property>
<property name="disableTime" type="java.lang.String">
<column name="DISABLE_TIME" length="20" />
</property>
<set name="fatalDiseasesLimit" table="T_FATAL_DISEASES_LIMIT"
cascade="save-update" inverse="true" lazy="false" where=" disable='0' ">
<key column="SERIAL_NUMBER" property-ref="serialNumber"></key>
<one-to-many
class="myclass.database.tablemapping.TFatalDiseasesLimit" />
</set>
<set name="hospital" table="T_FATAL_DISEASES_SET"
cascade="save-update" inverse="true" lazy="false">
<key column="DISEASE_NUMBER" property-ref="serialNumber"></key>
<many-to-many column="HOSPITAL_NUMBER" property-ref="serialNumber"
class="myclass.database.tablemapping.THospitalInformation" />
</set>
</class>
</hibernate-mapping>




<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="myclass.database.tablemapping.THospitalInformation" table="T_HOSPITAL_INFORMATION" schema="SA">
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="sequence">
<param name="sequence">T_HOSPITAL_INFORMATION_SEQ</param>
</generator>
</id>
<property name="serialNumber" type="java.lang.String">
<column name="SERIAL_NUMBER" length="20" />
</property>
<property name="name" type="java.lang.String">
<column name="NAME" length="50" />
</property>
<property name="type" type="java.lang.String">
<column name="TYPE" length="1" />
</property>
<property name="provinceNumber" type="java.lang.String">
<column name="PROVINCE_NUMBER" length="20" />
</property>
<property name="cityNumber" type="java.lang.String">
<column name="CITY_NUMBER" length="20" />
</property>
<property name="countyNumber" type="java.lang.String">
<column name="COUNTY_NUMBER" length="20" />
</property>
<property name="townNumber" type="java.lang.String">
<column name="TOWN_NUMBER" length="20" />
</property>
<property name="villageNumber" type="java.lang.String">
<column name="VILLAGE_NUMBER" length="20" />
</property>
<property name="contact" type="java.lang.String">
<column name="CONTACT" length="50" />
</property>
<property name="tel" type="java.lang.String">
<column name="TEL" length="20" />
</property>
<property name="email" type="java.lang.String">
<column name="EMAIL" length="200" />
</property>
<property name="address" type="java.lang.String">
<column name="ADDRESS" length="200" />
</property>
<property name="stop" type="java.lang.String">
<column name="STOP" length="1" />
</property>
<property name="creatorNumber" type="java.lang.String">
<column name="CREATOR_NUMBER" length="20" />
</property>
<property name="creatorTime" type="java.lang.String">
<column name="CREATOR_TIME" length="20" />
</property>
<property name="modifyNumber" type="java.lang.String">
<column name="MODIFY_NUMBER" length="20" />
</property>
<property name="modifyTime" type="java.lang.String">
<column name="MODIFY_TIME" length="20" />
</property>
<property name="stopNumber" type="java.lang.String">
<column name="STOP_NUMBER" length="20" />
</property>
<property name="stopTime" type="java.lang.String">
<column name="STOP_TIME" length="20" />
</property>
<property name="state" type="java.lang.String">
<column name="STATE" length="1" />
</property>
<!-- -->
<set name="fatalDiseaseDirectory" table="T_FATAL_DISEASES_SET"
cascade="save-update" inverse="true" lazy="false" where=" disable='0' ">
<key column="HOSPITAL_NUMBER" property-ref="serialNumber"></key>
<many-to-many column="DISEASE_NUMBER" property-ref="serialNumber"
class="myclass.database.tablemapping.TFatalDiseasesDirectory" />
</set>

</class>
</hibernate-mapping>


两个表都已经创建数据了,医院表有数据:A,B,C; 病种表有数据:01,02,03
我想开通A医院有01,02,03这些病种,如何通过程序新增中间表数据,
最后中间表的数据为:
1 A 01
2 A 02
3 A 03
...全文
742 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouxingfa 2012-03-12
  • 打赏
  • 举报
回复
2个inverse 都等于true 肯定不行,最少一个false
LMAOhuaNL 2011-08-12
  • 打赏
  • 举报
回复
在数据库建立一个中间表就可以了
zhiquan911 2011-08-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zaijianwunai 的回复:]
多对多映射,中间表如果需要额外的数据,就需要为中间表建立实体类,再创建个类就OK了
[/Quote]

中间表的实体类已经有了,怎样通过编写代码进行新增该表数据?
luohuijun619 2011-08-12
  • 打赏
  • 举报
回复
可以通过Hibernate自动建表
zhiquan911 2011-08-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lmaohuanl 的回复:]
在数据库建立一个中间表就可以了
[/Quote]

已经有了,具体实现新增的代码没有。
zaijianwunai 2011-08-11
  • 打赏
  • 举报
回复
多对多映射,中间表如果需要额外的数据,就需要为中间表建立实体类,再创建个类就OK了

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧