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