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]