本人初学Hibernate时,在用Eclipse以Mysql为数据库进行逆向工程时,外键的one-to-many和many-to-one关系怎么都在domain类中生成不了。后来思考下是不是数据库外键出了问题?我用的是别人的oracle数据库的sql语句生成的表,原来oracle数据库和mysql数据库外键的生成方式不同,我的mysql数据库中表之间的外键映射关系就没有成功,才导致Eclipse在逆向工程时没有成功映射外键关系。
用Eclipse或MyEclipse进行逆向工程,早就是老生常谈的问题,此处不再赘述,在这里说一说,oracle和Mysql生成外键 的方式,此处以学生选课为例来说明,一共三张表,表的具体细节不再介绍,相信大家一看代码就能明白!
首先是oracle示例:
create table student (sid number primary key , --这是学生的学号 sname varchar2(45) not null, --学生姓名 ssex char(2) not null,--性别 sdept varchar2(10) not null, --所在系 sage number(3) ,--年龄 saddress varchar2(45) --住址 ) create table course ( cid number primary key ,--这是课程号 cname varchar2(50) not null,--课程名 ccredit number(3) --课程学分 ) create table studCourse ( stuCourseId number primary key ,--这是一个自增的,表示一次选课 <span style="color:#ff0000;">--此处外键映射</span> sid number references student(sid),--学生号, <span style="color:#ff0000;">--此处外键映射</span> cid number references course(cid),--课程号 grade number not null--成绩 )然后是Mysql示例:
<span style="font-size:18px;">create table student (sid int primary key , sname varchar(45) not null, ssex varchar(2) not null, sdept varchar(10) not null, sage int(3) , sadss varchar(45) ) create table course ( cid int primary key , cname varchar(50) not null, ccredit int(3) ) create table studCourse ( stuCourseId int primary key AUTO_INCREMENT, sid int, cid int , grade int not null, INDEX (sid), FOREIGN KEY (sid) REFERENCES student(sid), INDEX (cid), FOREIGN KEY (cid) REFERENCES course(cid) ) 最后两行是Mysql的外键映射方式</span>