一、代码使用
//初始化
User user = new User();
UserMore more = new UserMore();
//设置关联关系
user.setMore(more);
more.setUser(user);
//持久化
session.save(user);
二、具体配置
public class User
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = false)
@PrimaryKeyJoinColumn
private UserMore more;
//其余属性...
}
public class UserMore
{
@Id
@GeneratedValue(generator = "pkGenerator")
@GenericGenerator(
name = "pkGenerator",
strategy = "foreign",
parameters = @Parameter(name = "property", value = "user")
)
private int id;
@OneToOne(fetch = FetchType.LAZY, mappedBy = "more")
@PrimaryKeyJoinColumn
private User user;
//其余属性...
}
三、具体说明
1.
@PrimaryKeyJoinColumn
告诉hibernate使用主键作为关联字段 大体相当于@JoinColumn(name="id")
2.
@GenericGenerator(
name = "pkGenerator",
strategy = "foreign",
parameters = @Parameter(name = "property", value = "user")
)
这段注解的意思是 使用当前对象中user属性的主键来作为本对象的主键(有点绕口啊 理解万岁吧...)
3.
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = false)
optional很重要 指定关联属性不能为空
如果想要实现延迟加载就一定要将这个属性设置为false
这是因为JPA需要知道对应的数据是否存在后 才能决定是创建一个"延迟代理"还是"null引用"
所以就不得不发起一条SQL请求来验证
分享到:
相关推荐
NULL 博文链接:https://zhouhaitao.iteye.com/blog/1171227
NULL 博文链接:https://selvemen.iteye.com/blog/459102
demo代码; 博客地址:http://blog.csdn.net/smilefyx/article/details/48951933
Hibernate one to one 源码!有注释
关联的实体都共享同样的主键,(2).其中一个实体通过外键关联到另一个实体的主键(注意要模拟一对一关联必须在外键列上添加唯一约束),(3).通过关联表来保存两个实体之间的连接关系(要模拟一对一关联必须在每一个外键...
概述 示例应用程序演示了如何将Hibernate用作Spring Data JPA的JPA提供程序... 使用外键列的两个实体类之间的@OneToOne关联 关于abstract类的JPA count查询 在abstract类上执行count查询 自定义JPA功能 扩展Spring D
* @OneToOne 设置一对一个关联。cascade属性有五个值(只有CascadeType.ALL好用?很奇怪),分别是CascadeType.PERSIST(级联新建),CascadeType.REMOVE(级联删除),CascadeType.REFRESH(级联刷新),CascadeType....
这是JPA标签配置手册,从ORACLE官方得到的资料,里面对JPA所有的标签都进行详细的说明。 Index of Annotations • A o @AssociationOverride o @AssociationOverrides o @AttributeOverride o @AttributeOverrides ...
以上所有实体使用 JOINED 策略 Ferry和Boat class使用同名的主键关联(eg: Boat.id = Ferry.id), AmericaCupClass 和 Boat 关联的条件为 Boat.id = AmericaCupClass.BOAT_ID. 从父类继承的属性 @MappedSuperclass ...
详解Hibernate cascade级联属性的CascadeType的用法 cascade(级联) ...cascade表示级联操作,在hibernate配置注解@OneToOne,@OneToMany,@ManyToMany,@ManyToOne中的属性。 例如: @ManyToOne(c
里面是hibernate 一对一的例子,里面有数据库,是用oracle连接的,把脚本生成一下就可以了.
onetoone fk 一对一外键关联带数据库。 onetoone fk 一对一外键关联带数据库。 onetoone fk 一对一外键关联带数据库。
该文件为我的博客“Mybatis注解方式实现一对一,一对多的关联查询”(链接:https://blog.csdn.net/weixin_44003141/article/details/85686694)的源代码,欢迎下载查看。
NULL 博文链接:https://lc2586.iteye.com/blog/721279
JPA Java 持久化 API,是官方定义的基于注解形式的技术规范, 进行对象关系映射(ORM),对象与表的映射,对象之间的关系与表...// 映射主键(PK) @Id // 映射到表的列(字段) @Column // 一对一 @OneToOne // 一对多
简单的关联关系的小例子: OneToOne: Person.java: package model; import javax.persistence.*; @Entity public class person { //标识属性 @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private...
Hibernate课程 在这个资料库中,我尝试学习Hibernate 话题 简单的结局 预先映射 @OneToOne @OneToMany @多多 提取类型 懒惰的 渴望的
jpa_associations_complete 这是主要 JPA 协会注释的完整且自包含的示例 例如@ManyToOne、@OneToMany 和@OneToOne。... 单元测试允许验证关联集合的获取以及对关联集合的插入和更新的级联 配置是基于 Spring XML 的。
hibernate_onetoone.part4.rar
hibernate_onetoone.part5.rar