terry_yip 发表于 2013-1-27 06:11:02

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

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`))

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

<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>

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}

测试

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);}


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

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

欢迎大家发表意风。
页: [1]
查看完整版本: one-to-one关系中的插入问题