一个初学者的问题,比较复杂表的hibernate的映射该如何写呢?

Chief007 2007-02-12 10:51:15
省表
CREATE TABLE `tprovince` (
`ProvinceID` int(11) NOT NULL COMMENT '省份',
`ProvinceName` varchar(16) character set gb2312 default NULL,
`ShortName` varchar(4) default NULL COMMENT '简称',
PRIMARY KEY (`ProvinceID`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
市表
CREATE TABLE `tcity` (
`ProvinceID` int(11) NOT NULL COMMENT '省份编号',
`CityID` int(11) NOT NULL COMMENT '市编号',
`CityName` varchar(20) default NULL COMMENT '市名称',
`Zoneletter` varchar(6) default NULL COMMENT '区号',
PRIMARY KEY (`ProvinceID`,`CityID`),
KEY `ProvinceID` (`ProvinceID`),
CONSTRAINT `tcity_fk` FOREIGN KEY (`ProvinceID`) REFERENCES `tprovince` (`ProvinceID`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
客户表
CREATE TABLE `tcustomer` (
`CustomerID` varchar(8) NOT NULL COMMENT '客户编号',
`CustomerName` varchar(40) default NULL COMMENT '客户名称',
`ProvinceID` int(11) default NULL COMMENT '省',
`CityID` int(11) default NULL COMMENT '市',
`Address` varchar(40) default NULL COMMENT '通信地址',
`linkman` varchar(16) default NULL COMMENT '联系人',
`zip` varchar(8) default NULL COMMENT '邮政编码',
`duty` varchar(16) default NULL COMMENT '职务',
`phone` varchar(20) default NULL COMMENT '电话',
`Fax` varchar(20) default NULL COMMENT '传真',
`mobile` varchar(20) default NULL COMMENT '手机',
`ScopeOfBusiness` text COMMENT '经营范围',
PRIMARY KEY (`CustomerID`),
UNIQUE KEY `CID` (`CustomerID`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
其中省和市表是主子关系, customer表的provinceid,cityid依赖于省和市.
请问以上三个表的影射该如何写呢?
...全文
321 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chii 2007-02-13
  • 打赏
  • 举报
回复
顶xinwei112627() ,使用Hibernate Synchronizer就很方便,最新版本3.1.9 下载地址:http://sourceforge.net/projects/hibernatesynch/
xinwei112627 2007-02-13
  • 打赏
  • 举报
回复
推荐你使用工具:)
chii 2007-02-13
  • 打赏
  • 举报
回复
只给出你主外键,其余的你自己加上
TblCity.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping>
<class
name="TblCity"
table="tbl_City"
>
<id
name="Id"
type="integer"
column="uidCityID"
>
<generator class="native"/>
</id>

<many-to-one
name="UidProvinceID"
column="uidProvinceID"
class="TblProvince"
not-null="false"
>
</many-to-one>


<set name="TblCustomers" inverse="true">
<key column="uidCityID"/>
<one-to-many class="TblCustomer"/>
</set>


</class>
</hibernate-mapping>
TblProvince.hbm.xml
<hibernate-mapping>
<class
name="TblProvince"
table="tbl_Province"
>
<id
name="Id"
type="integer"
column="uidProvinceID"
>
<generator class="native"/>
</id>



<set name="TblCustomers" inverse="true">
<key column="uidProvinceID"/>
<one-to-many class="TblCustomer"/>
</set>

<set name="TblCities" inverse="true">
<key column="uidProvinceID"/>
<one-to-many class="TblCity"/>
</set>


</class>
</hibernate-mapping>
TblCustomer.hbm.xml
<hibernate-mapping>
<class
name="TblCustomer"
table="tbl_Customer"
>

<id
name="Id"
type="integer"
column="uidCustomerID"
>
<generator class="native"/>
</id>

<many-to-one
name="UidCityID"
column="uidCityID"
class="TblCity"
not-null="false"
>
</many-to-one>
<many-to-one
name="UidProvinceID"
column="uidProvinceID"
class="TblProvince"
not-null="false"
>
</many-to-one>
</class>
</hibernate-mapping>
echoiori 2007-02-13
  • 打赏
  • 举报
回复
使用myeclipse实现,非常简便快捷,网上也有相关的使用视频,下载个看看吧;
Chief007 2007-02-13
  • 打赏
  • 举报
回复
我用的是 hibernate tools,如果要生成以上关系,必须将tcustomer的ProvinceID和CityID设置成外键才能生成类似的映射文件.但我现在设计的表ProvinceID,CityID是允许为空的.所以工具好象不可行.
谢谢 chii(天涯以西) 给我的例程.我试试看看在我的demo中能调试通过不.
dongjixing 2007-02-12
  • 打赏
  • 举报
回复
帮顶

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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