在hibernate中实现一对一的关联有两种方法,分别是共享主键关联和唯一外键关联
(1)共享主键关联
有两个表 user和profile
user表中有id(主键) username password
profile表中有id(主键) email phone
其实profile表正是从user表中分割出来的,
设置相应的类User类,和profile类
user类中的字段
private Integer id;
private String username;
private String password;
private Profile profile;
生成对应的get/set方法
profile表中的字段
private Integer id;
private String email;
private String phone;
private User user;
生成对应的get/set方法
在User.hbm.xml中
<class name="com.cheng.entry.User" table="user">
<id name="id" type="java.lang.Integer">
<column name="id"></column>
<generator class="native"></generator>
</id>
<property name="username" type="java.lang.String">
<column name="username" length="200"></column>
</property>
<property name="password" type="java.lang.String">
<column name="password" length="200"></column>
</property>
<one-to-one name="profile(这个就是user表中设置的属性)" class="com.cheng.entry.Profile"></one-to-one>
</class>
在Profile.hbm.xml中
<class name="com.cheng.entry.Profile" table="profile">
<id name="id" type="java.lang.Integer">
<column name="id"></column>
<generator class="foreign">//注意这里有变化
<param name="property">user(这个就是profile类中的属性)</param>
</generator>
</id>
<property name="email" type="java.lang.String">
<column name="email" length="200"></column>
</property>
<property name="phone" type="java.lang.String">
<column name="phone" length="200"></column>
</property>
<one-to-one name="user" class="com.cheng.entry.User"></one-to-one>
</class>
(2)唯一外键关联
在上面的profile表中修改一下,增加一个外键关联到user表中u_id,而原来的id设置为自动增长。
修改Profile.hbm.xml文件
<class name="com.cheng.entry.Profile" table="profile">
<id name="id" type="java.lang.Integer">
<column name="id"></column>
<generator class="native"></generator>
</id>
<property name="email" type="java.lang.String">
<column name="email" length="200"></column>
</property>
<property name="phone" type="java.lang.String">
<column name="phone" length="200"></column>
</property>
<many-to-one name="user" class="com.cheng.entry.User" unique="true">
<column name="u_id"></column>
</many-to-one>
</class>
红色的字体表示修改过的
分享到:
相关推荐
Hibernate 一对一外键单向关联 Hibernate 一对一主键单向关联 Hibernate 一对一连接表单向关联 Hibernate 一对多外键单向关联 Hibernate 一对多连接表单向关联 Hibernate 多对一外键单向关联 Hibernate 多对一连接...
Hibernate双向一对一关联映射(注解版)
免积分的资源,希望可以帮到大家,这是我学习hibernate时候,自己写的代码。希望大家学业有成。
hibernate主键实现一对一单向关联关系源码
包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。
hibernate外键实现一对一单向关联关系源码
hibernate外键实现一对一双向关联关系源码
Hibernate一对一,一对多,多对多实例
Hibernate映射一对多关联关系
这里包含了hibernate多对一单向关联关系实现源码,希望对你有用。
hibernate主键一对一关联映射代码示例
hibernate双向一对多关联映射(注解版)
1、在有外键的一方,可以维护关联关系,可以建立关联关系,同样也可以解除关联关系,可以任意删除本对象,如果在hbm.xml中设置了cascade="delete",也可以删除关联对象 2、在没有外键的一方,不可以维护关联关系,...
hibernate一对一主键关联代码实现
demo代码; 博客地址:http://blog.csdn.net/smilefyx/article/details/48951933
│ ├─ 一对一外键单向关联 │ ├─ 一对一主键单向关联 │ ├─ 一对一连接表单向关联 │ ├─ 一对多外键单向关联 │ ├─ 一对多连接表单向关联 │ ├─ 多对一外键单向关联 │ ├─ 多对一连接表单向关联 │ └...
博文链接:https://shaqiang32.iteye.com/blog/201308
博文链接:https://llying.iteye.com/blog/220802
博文链接:https://shaqiang32.iteye.com/blog/201312
Hibernate双向一对一关联映射(XML版)