one-to-one关系中的插入问题

[code]
CREATE TABLE `member` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(11) default NULL,
PRIMARY KEY (`id`)
)


CREATE TABLE `contact` (
`id` int(11) NOT NULL auto_increment,
`memberId` int(11) default NULL,
`mobile` varchar(30) default NULL,
PRIMARY KEY (`id`)
)
[/code]

member表与contact表是一对一关联的,member.id和contact.memberId相对应。

[code]
<class name="table.member.Member" table="member">

<id name="id" type="long" unsaved-value="0">
<column name="id" not-null="true"/>
<generator class="native"/>
</id>

<property name="name"/>
<one-to-one name="contact" class="table.member.Contact" cascade="all"/>

</class>


<class name="table.member.Contact" table="contact">

<id name="id" type="long" unsaved-value="0">
<column name="id" not-null="true"/>
<generator class="native"/>
</id>

<property name="mobile" type="string" column="mobile" />
<one-to-one name="member" class="table.member.Member" cascade="all"/>

</class>
[/code]

[code]
public class Member
{
private long id;
private String name;
Contact contact;

。。。。。
getter,setter()

}


public class Contact
{
private long id;
private long memberId;
String mobile;
Member member;

。。。。。。。
getter,setter

}
[/code]

测试

[code]
public static void main(String[] args)
{
DAO dao=new DAO();
Member m=new Member();
Contact c=new Contact();


c.setMobile("84250795");
m.setContact(c);
m.setName("Mother");

dao.insert(m);
}
[/code]


当我想在session.save(member)的时候,在contact中也插入一行新数据,但是member的id是native的,由数据库产生,有什么办法令到这个新的id的值,被hibnernate得到,并插入到contact的memberId当中呢?

我搜索了一下本版的贴子,以前也有人问过同样的问题,有人回答说one-to-one关系,必要session.save两次,我很想大家论讨一下是不是一定要这样做。我想如果是这样的话,那么one-to-one就没多大意义了,我不如直接在表中写个外键约束算了。

欢迎大家发表意风。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值