hibernate关联的问题?

现在开始学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做外键,做关联就会有问题。