现在开始学hibernate,今天看了一本hibernate的书,里面,有一个例子,tb_dept表包含的字段id(唯一标识int型),deptName(varchar型),tb_staff表包含的字段id(唯一标识int型),dept_id(int型),staff_name(varchar型),书本里的意思就是用id来表示部门编号和员工编号。
TbDept.hbm.xml配置
TbStaff.hbm.xml配置
1.TbStaff怎么知道dept_id字段对应b_dept表的id呢?
2.如果我在tb_dept加入deptId(int型)字段,令tb_staff表dept_id字段与它对应,这时应该怎么配置?
[b]问题补充:[/b]
我在数据库里面没有设置外键,要关联两个表,一定要设置外键吗?
[b]问题补充:[/b]
不知道为什么,不能回贴,只能在这里补充问题了。
to jbin:
我就是只把tb_dept表的id字段作为唯一标记,仅仅是一个唯一的标记,是int型的,然后在里面添加一个varchar型的deptId字段,因为很多部门编号都是带字母的,然后把tb_staff的dept_id改为varchar型,这样方便对应。
如果我有上面的要求,怎么配置?
[b]问题补充:[/b]
刚才试了下,自己另外设置外键关联不成功,是不是hibernate规定了tb_staff表的外键必须是tb_dept表的主键?
恩,是的。这个你多看看SQL相关的资料,把他们的关系整理下。同时你也可以了解下联合主键,在这里不多谈了。
1.因为staff里有外键dept_id.关联到dept表里面
2.有一个外键关联到即可.你加字段只须要在dept表里面加上去就好了
1.对于部门表 是一对多的关系 即一个部门对应多个员工 one-to-many 在这里做了设置 而员工表的dept_id实际就是一个外键。
2.员工表的dept_id是指部门ID 即: 部门表的id 你贴出的是配置文件,通过配置文件可进行2个表的关联。
“如果我在tb_dept加入deptId(int型)字段”这个是完全无意义的事情。
如果你不使用配置文件,可以建立一个关联表,如:
create table info_dept_staff (
dept_id int;
staff_id int
);
当然也可以直接程序写,那样更没意义。
明白你的意思了
部门有ID,名称,部门代码(如:id:1 name:财务部 dept_origid:cw)
你的想法是在dept中加入一个字段dept_origid,随之在员工表做关联。但是,这是不可取的,因为ID是主键,关联后也是具有唯一性的。如果你用dept_origid做关联,就会存在不唯一。
如:一个学校,它有ID,有全称(fullname),简称(name).
id 1 fullname:上海电视大学 name:shdd
id 2 fullname:上海电力大学 name:shdd
首先会存在这种情况,你用name做外键,做关联就会有问题。