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就没多大意义了,我不如直接在表中写个外键约束算了。
欢迎大家发表意风。
分享到:
相关推荐
本文将深入探讨Hibernate中一对多(One-to-Many)关系的处理方式,特别是通过外键映射和inverse属性的应用场景。 #### 一对多关系概念 一对多关系在数据库设计中非常常见,它指的是一个实体可以与多个其他实体关联...
ComponentOne Doc-To-Help 6.5独有的项目架构存储了类型、主题、索引关键词和项目数据库中内容条目表之间的所有关系。可自动生成索引条目、超级链接标签、转向和弹出等功能。 项目编辑器 在单一的界面中,便可进行...
在Laravel框架中,"belongs-to-one"关系是Eloquent ORM(对象关系映射)中的一个基本概念。它表示一种一对一的关联,其中一个模型属于另一个模型。这种关系在数据库设计中非常常见,例如用户和其个人资料,或者汽车...
1.1 单向一对一(One-to-One)关系 在这种关系中,一个类的实例对应数据库表中的一行。例如,一个用户类(User)可能有一个唯一的身份证明类(Identity),两者之间是一对一关系。在NHibernate中,这可以通过使用`<one-...
- **定义**:`one-to-one`关联表示两个实体之间的一对一关系。 - **示例**:用户与其个人资料之间的关联。 - **注意点**: - `one-to-one`关联通常通过主键进行连接。 - 在某些情况下,将一个大的数据表拆分成多个...
由于文件列表只给出了`one-to-one-chat-main`,这可能是项目根目录的名称,具体的代码结构和实现细节需要进一步查看源代码才能分析。通常,一个这样的项目会包含以下部分: - `views`:存放EJS模板文件的地方。 - `...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联是对象关系映射(ORM)中的一个重要概念,它表示两个实体类之间的一种一对一的关系。在这种关系中,一个实体类的实例对应另一个实体类的唯一实例。在...
本文将深入探讨Hibernate5中的映射关系,主要包括多对多(Many-to-Many)和一对多(One-to-Many)这两种关系。 一、多对多映射(Many-to-Many) 多对多关系在数据库中表现为两个表之间存在多个连接记录,而在对象...
在数据处理过程中,有时我们需要保留来自前一行的值并在当前行中使用。Informatica作为一个强大的ETL(提取、转换、加载)工具,提供了多种方法来实现这种“保留前一行值”的功能。本示例将详细解释如何在...
在Java的持久化框架Hibernate中,一对多(Many-to-One)和多对一(One-to-Many)的关系映射是数据库关系模型中的常见关联类型。本文将深入探讨这两种关联方式在使用Hibernate时的配置,包括基于注解(Annotation)和...
在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本篇将详细阐述Hibernate中的对象三状态、一对一(OneToOne)、一对多...
这种关系在数据库中可以表现为一对多(One-to-Many)或多对一(Many-to-One)的关系。 1. 一对多映射(One-to-Many): 在这种关系中,一个实体(父实体)可以与多个其他实体(子实体)相关联。在Hibernate中,...
《Introduction to Algorithms, Third Edition》这本书对于理解和应用计算机算法领域中的基本概念和技术是极其有帮助的,适合于计算机科学与工程、软件开发和其他相关领域的学习者。它不仅覆盖了算法理论,还包含了...
3. 排序算法:常见的排序算法,例如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等可能在参考资料中有所涉及。 4. 搜索算法:包括线性搜索、二分搜索以及在特定数据结构上的搜索技术,如图搜索算法...
* 一对一关系(One-to-One):每个数据元素对应一个数据项。 * 一对多关系(One-to-Many):每个数据元素对应多个数据项。 * 多对一关系(Many-to-One):多个数据元素对应一个数据项。 * 多对多关系(Many-to-...
- **定义与应用**:代码片段是预定义的代码块,可以快速插入到源代码中。第 3 章深入探讨了 Visual Studio 2010 中代码片段的功能及其使用方法。 - **应用场景**:适用于快速编写常见代码模式,减少重复工作量。 ##...
edjpgcom is a free Windows application that allows you to change (or add) a JPEG commment in a JPEG file. That's all it does. All other fields in a JFIF or Exif file ...可以在正常的图片中插入一句话代码。
- **插入数据到表格**:将`ls_flights`插入到`lt_flights`表中,完成数据初始化。 - **绑定数据**:最后,通过`bind_table`方法将`lt_flights`数据绑定到`lo_nd_flights`节点上。 #### 四、代码示例 以下是一些...
- 一对一(One-to-One):一个表中的记录只对应另一个表中的一个记录,如员工和员工详细信息的关系。 4. 多表查询: - 笛卡尔积:不加任何连接条件时,两个表的交叉连接会产生所有可能的组合。 - 内连接(INNER ...