在用hibernate的时候,需要一张表(business)映射另一张表(user),其中business表的定义如下:CREATE TABLE `business` (
`bs_id` int(10) unsigned NOT NULL auto_increment,
`bsname` varchar(150) NOT NULL,
`comments` varchar(200) default NULL,
`remindtype` int(11) default NULL,
`sdate` timestamp NULL default NULL,
`edate` timestamp NULL default NULL,
`account_id` int(10) unsigned default NULL,
`oper_id` int(10) unsigned default NULL,
PRIMARY KEY (`bs_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;但是account_id,oper_id都是对应这user表,用hibernate怎么映射它的user.hbm.xml表呢?这个account_id,oper_id怎么对应user表呢?
`bs_id` int(10) unsigned NOT NULL auto_increment,
`bsname` varchar(150) NOT NULL,
`comments` varchar(200) default NULL,
`remindtype` int(11) default NULL,
`sdate` timestamp NULL default NULL,
`edate` timestamp NULL default NULL,
`account_id` int(10) unsigned default NULL,
`oper_id` int(10) unsigned default NULL,
PRIMARY KEY (`bs_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;但是account_id,oper_id都是对应这user表,用hibernate怎么映射它的user.hbm.xml表呢?这个account_id,oper_id怎么对应user表呢?
private User account;
private User oper;
并加上setter和getter2.然后在映射文件里加上如下配置
<many-to-one name="account" class="your.package.User" fetch="select">
<column name="account_id"/>
</many-to-one>
<many-to-one name="oper" class="your.package.User" fetch="select">
<column name="account_id" />
</many-to-one>
<column name="account_id"/>
</many-to-one>
<many-to-one name="oper" class="your.package.User" fetch="select">
<column name="oper_id" />
</many-to-one>
2、既然account_id与oper_id都是user表的,那你直接就在business表中添加外键,外键参照了user的主键
3、“account_id,oper_id都是对应这user表”,从你建表的SQL中看不出来了