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就没多大意义了,我不如直接在表中写个外键约束算了。

欢迎大家发表意风。
 

你可能感兴趣的:(DAO,C++,c,Hibernate,mobile)