jpa 关系拥有方

使用Java Persistence API(JPA)时,通常需要在两个实体之间创建关系。 这些关系是通过使用外键在数据模型(例如数据库)中定义的,而在我们的对象模型(例如Java)中则使用注释来定义关联,以定义关联。 在对象模型中定义关系或关联时,一项常见的任务是识别关系的拥有方。 识别关系中的拥有实体很重要,因为拥有方通常是(如果不是总是)必须在@JoinColumn注释中指定的地方。 为了说明实体拥有方的概念,我们将使用数据模型来支持此讨论。

让我们分析这个简单的模型,该模型描述了两个表POST和SERIES之间的关系。 在这种关系中,POST表存储一个博客帖子,该博客帖子可以是SERIES表表示的一系列帖子的一部分。 在数据模型中,POST表上的SERIES_ID外键将POST与相应的SERIES关联。 此外键指示哪个实体拥有该关系。 让我们在对象模型中添加这些实体,并在它们之间建立简单的单向关系。 一,系列实体:

@Entity
@Table(name="SERIES")
public class Series {@Id@GeneratedValue(strategy=GenerationType.AUTO)@Column(name="SERIES_ID")private Integer seriesId;@Column(name="TITLE")private String title;//Accessors...
}

和Post实体:

@Entity
@Table(name="POST")
public class Post {@Id@GeneratedValue(strategy=GenerationType.AUTO)@Column(name="POST_ID")Integer postId;@Column(name="TITLE")String title;@Column(name="POST_DATE")Date postDate;@ManyToOne@JoinColumn(name="SERIES_ID")private Series series;//Accessors...
}

在Post实体中,在字段Series上方指定@JoinColumn批注,以表示用于标识Post的相应Series的外键。 @JoinColumn批注放置在Post实体上,因为它是关系中的拥有实体。 通过引用数据模型中的两个实体并标识包含外键的实体来确定实体的拥有方。 如果Post和Series实体之间的关系要求是双向的,则意味着Post实体应该可以从Series进行访问,则关系(Series)的反面必须使用@OneToMany进行注释,并定义了mappingBy元素。 mappingBy元素应指向关系(Post)的拥有方的字段,该字段指定用于关联实体的@JoinColumn。

在Series实体的以下重构中着重说明了建立双向关系的映射:

@Entity
@Table(name="SERIES")
public class Series {@Id@GeneratedValue(strategy=GenerationType.AUTO)@Column(name="SERIES_ID")private Integer seriesId;@Column(name="TITLE")private String title;@OneToMany(mappedBy="series")private List posts = new ArrayList();//Accessors...
}

总之,在JPA持久性单元内定义的关系中确定拥有实体时,重要的是查阅数据模型以查找数据模型中的各个表中哪些实体包含外键。

参考: JPA:在ToThought博客上,由我们的JCG合作伙伴 Kevin Bowersox 确定关系的归属方 。

翻译自: https://www.javacodegeeks.com/2013/04/jpa-determining-the-owning-side-of-a-relationship.html

jpa 关系拥有方

jpa 关系拥有方_JPA:确定关系的归属方相关推荐

  1. JPA:确定关系的归属方

    使用Java Persistence API(JPA)时,通常需要在两个实体之间创建关系. 这些关系是通过使用外键在数据模型(例如数据库)中定义的,而在我们的对象模型(例如Java)中则使用注释来定义 ...

  2. JPA(三)之实体关系一对多(多对一)

     1.背景介绍: 对于购买商品时,订单信息(Order)和订单商品信息(OrderItem)的关系就是一对多的关系. 2.实体bean: Order.java代码 ? 1 2 3 4 5 6 7 ...

  3. mysql中关系怎么弄_mysql数据库关系操作

    ### mysql数据库 #### 知识要点: 1. 数据操作增.删.改 2. 外键约束要求 3. 一对多表关系 4. 一对一表关系 5. 多对多表关系 6. 外键约束的参照操作 ### 数据操作 # ...

  4. mysql第三章关系模型_一个MySQL关系模型只有三个关系(二维表)组成。_学小易找答案...

    [判断题]DELETE语句功能是对表中所有记录或满足条件的记录进行批量删除. [填空题]The computer's entire ____ was on a single board. [单选题]下 ...

  5. ICML2020 | 基于贝叶斯元学习在关系图上进行小样本关系抽取

    今天给大家介绍来自加拿大蒙特利尔大学Mila人工智能研究所唐建教授课题组在ICML2020上发表的一篇关于关系抽取的文章.作者利用全局关系图来研究不同句子之间的新关系,并提出了一种新的贝叶斯元学习方法 ...

  6. 关系计划笔谈(9-3):关系预置和关系计划

    关系计划笔谈(9-3):关系预置和关系计划     关系计划是社会网络的产物.当前社会在产能已经非常过剩的情况下,如何最大程度利用当前网络技术带来的网络思维与网络哲学,将供需的关系返璞归真到朴素的并行 ...

  7. 论文阅读课3-GraphRel: Modeling Text as Relational Graphs for(实体关系联合抽取,重叠关系,关系之间的关系,自动提取特征)

    文章目录 abstract 1.Introduction 2.相关工作 3.回顾GCN 4.方法 4.1第一阶段 4.1.1 Bi-LSTM 4.1.2 Bi_GCN 4.1.3 实体关系抽取 4.2 ...

  8. java 类 关系_总结Java类关系

    什么是关系? 关系是指事物之间存在单向或双向的作用或者影响的状态.其中类与类之间要么有关系要么没关系,感觉这句话有点说的很无耻,谁都知道,但是其中奥妙在于很难确定类与类之间是否有关系.证明两个或者多个 ...

  9. 熊太行.关系攻略之---正确认识关系和自己

    目录 如何拯救一个害羞的灵魂? 如何摆脱老好人的标签? 如何做自己的人生导演? 在群体中如何避免从众? 如何摆脱纠结,做出正确选择? 如何用道歉挽回关系? 为什么说情绪管理是生死攸关的事? 如何狙击负 ...

最新文章

  1. Docker常用命令大全
  2. kubernetes资源对象之security context
  3. 《人类简史》作者:应对 AI 革命,要打造新的经济、社会和教育体系
  4. 【unity】拓展自定义编辑器窗口(二)
  5. SVN更新后显示的U与G是什么意思?
  6. python中运算的英文_[lemon]Python中的运算符,LemonPython
  7. 生产管理erp系统源码_仁和ERP企业管理系统提高生产管理流程
  8. 1.7Oob 继承关系中构造方法的使用
  9. javascript基础系列:DOM相关的技术知识点
  10. 关于@Mapper注解的几个问题
  11. [BZOJ 3028]食物(生成函数)
  12. es6删除数组某一项_「JavaScript 从入门到精通」10.数组
  13. 如何衡量多元线性回归模型优劣
  14. ca蜘蛛特效nvas-nest.js | Bootstrap中文网开源项目免费 CDN 服务
  15. 经典软件体系结构风格(一)
  16. 服务器dell安装黑苹果系统,Dell D630安装10.8黑苹果全套驱动
  17. linux下使用iptables NAT上网
  18. vue结合Waterfall做图片瀑布流展示
  19. Cubic Curve
  20. 串口调试精灵的使用和串口程序调试技巧

热门文章

  1. 服务器性能指标(二)——CPU利用率分析及问题排查
  2. 要么干,要么滚,千万别混
  3. Servlet 流程控制
  4. Redis非阻塞I/O多路复用机制
  5. 检测窥屏_开挂、狙击、窥屏?乱象丛生的炉石狂野天梯,到底怎么了?
  6. 字段缺失_区分Protobuf 3中缺失值和默认值
  7. 解决:Could not find metadata org.apache.maven.plugins:maven-archetype-plugin/maven-metadata.xml in loc
  8. mysql引擎总结_MySQL存储引擎对比总结
  9. 一起来学ES —— 浅谈Nested结构
  10. java native关键字(java本地方法)