JPA:确定关系的归属方

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

Data Model

让我们分析这个简单的模型,该模型描述了两个表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实体中,在字段系列上方指定@JoinColumn批注,以表示用于标识帖子的各个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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368552.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器芯片镜像测试,模拟镜像服务器磁盘问题的两个测试【转】

我们知道在高安全模式下,在主服务器上提交的事务必须同时在镜像服务器上提交成功,否则该事务无法在主数据库上提交。在上面的图中,一个事务在主数据库上提交的步骤包含:客户端程序将事务发送给主数据库服务器SQLServer主数据库服务…

运用Arc Hydro提取河网

Arc hydro 插件需要 spatial analyst 支持: 解决方法:Tools菜单>>Extensions...,勾选Spatial Analyst 1.设置存储路径 ApUtilities-set target locations 2.导入dem 3.拼接dem Dataset Name 设置为.tif,即存为tif格式,否则…

服务器性能是什么,什么是服务器性能的显卡,怎么理解?

什么是服务器性能的显卡,怎么理解?如果单说“”二字就是个伪命题,服务分不同的性能级别,有些刀片器的性能甚至还不如某些发烧级的游戏台式机,那它所用的显卡性能也会比较一般,如果是说哪些显卡是专门为服务…

打印机网络共享服务器不稳定,共享打印机无法访问怎么办,教你一招问题立马解决...

基本上只有本地打印机共享才会出现下面的问题,通过网线连接和打印机服务器连接的打印机不会出现此类问题,多个电脑连接网络打印机本质上还是各个电脑连接的本地打印机。一、 设置打印机共享时出现错误连接好本地打印机后,想要共享给同事使用&…

CSS margin 外边距 属性的位置关系

padding:内边距margin :外边距 margin:10px; 所有 4 个外边距都是 10px ******************************************* margin:10px 5px; 上外边距和下外边距是 10px右外边距和左外边距是 5px ******************************************** margin:10px…

C语言博客作业--字符数组

一、PTA实验作业 题目1:7-1 字符串转换成十进制整数 1. 本题PTA提交列表 2. 设计思路 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明。 这个问题我看了好久,试了很多的的错误点,答案和我预料的一样,所以我重新看了一遍…

Java 7 Update 21安全改进的详细信息

甲骨文昨天发布了三个Java更新 。 重要的是要注意它们包含一些与安全性相关的更改。 一段时间以来,已经宣布了其中的大多数更改,并且首先要注意的是Oracle按计划交付。 甲骨文公司Java平台安全经理Milton Smith最近在DevoxxUK上做了题为“ 用Java保护…

du的原理 linux_Linux 文件系统管理

1、文件系统介绍1)、Linux 文件系统特性super block(超级块)记录整个文件系统的信息。包括 block 与 inode 的总量,已经使用的 block 和 inode 的数量,未使用的 block 和 inode 的数量,block 与 inode 的大…

box-shadow IE8兼容处理

根据canisue&#xff08;http://caniuse.com/#searchbox-shadow&#xff09;&#xff0c;box-shadow兼容性如下图所示&#xff1a; 测试代码&#xff1a; 1 <!DOCTYPE html>2 <html>3 4 <head>5 <meta charset"UTF-8">6 …

ECharts.js学习(一) 简单入门

EChart.js 简单入门 最近有一个统计的项目要做&#xff0c;在前端的数据需要用图表的形式展示。网上搜索了一下&#xff0c;发现有几种统计图库。 MSChart 这个是Visual Studio里的自带控件&#xff0c;使用比较简单&#xff0c;不过数据这块需要在后台绑定。 ichartjs 是一款…

金蝶云系统显示服务器离线,金蝶云服务器已离线是什么情况

金蝶云服务器已离线是什么情况 内容精选换一换根据是否支持挂载至多台云服务器可以将磁盘分为非共享磁盘和共享磁盘。一个非共享磁盘只能挂载至一台云服务器&#xff0c;而一个共享磁盘可以同时挂载至多台云服务器。共享磁盘是一种支持多个云服务器并发读写访问的数据块级存储设…

分布式是什么意思_机架式ups是什么意思?与分布式DPS有何不同之处?

ups电源很多人听过了&#xff0c;主要是让设备在突然断电的情况下遭遇停电的损坏&#xff0c;保障数据及重要程序运行。那么&#xff0c;机架式ups电源可能就是很多人不太了解的了&#xff0c;在说到与分布式DPS有何不同之处那是很少有人清楚了解了&#xff0c;不管怎么说&…

【原】老生常谈-从输入url到页面展示到底发生了什么

刚开始写这篇文章还是挺纠结的&#xff0c;因为网上搜索“从输入url到页面展示到底发生了什么”&#xff0c;你可以搜到一大堆的资料。而且面试这道题基本是必考题&#xff0c;二月份面试的时候&#xff0c;虽然知道这个过程发生了什么&#xff0c;不过当面试官一步步追问下去的…

WebApi在MVC 4中一个Controll多个post方法报错处理

http://blog.csdn.net/lqh4188/article/details/53542400&#xff08;原创&#xff09; 转载于:https://www.cnblogs.com/william-CuiCui0705/p/8023832.html

关于文件关联的图标不能正常显示

不知道有没有人遇到过这种情况&#xff1a; 这两种情况都是关联的图标不能正常显示&#xff0c;但是可以正常打开。总觉得看着挺碍眼的&#xff0c;就看了下注册表&#xff0c;发现可以用以下方法解决&#xff1a; 打开注册表&#xff0c;[HKEY_CLASSES_ROOT]找到需要修改的文件…

华为畅享8plus停产了吗_牢记华为手机“三不买”原则,不花冤枉钱,选错要吃亏!...

如今华为手机已经占据国内手机市场份额的半壁江山&#xff0c;华为自然也就成为了买手机的首选。那么华为手机真的好吗&#xff1f;我认为应该理性看待&#xff0c;因为每个手机品牌都有好手机也有差手机&#xff0c;其实买华为你只需要牢记“三不买”原则&#xff0c;就可以不…

Spring MVC:MySQL和Hibernate的安全性

Spring有很多不同的模块。 所有这些对于具体目的都是有用的。 今天&#xff0c;我将讨论Spring Security。 该模块提供了灵活的方法来管理访问Web应用程序不同部分的许可。 在这篇文章中&#xff0c;我将研究Spring MVC &#xff0c; Hibernate &#xff0c; MySQL与Spring Sec…

Python 离线 安装requests第三方库

一、介绍 requests是Python的一个HTTP客户端库&#xff0c;跟urllib&#xff0c;urllib2类似&#xff0c;不过requests的优势在于使用简单&#xff0c;相同一个功能&#xff0c;用requests实现起来代码量要少很多。毕竟官方文档都很直白的说&#xff1a; python的标准库urllib2…

JS分页条插件

目标 制作js分页导航jq插件,用于无刷新分页或者刷新分页 实现目标参考京东和天猫的分页条. 有四个固定按钮,前页码,后页码,首页,末页. 程序关键点在于计算中间页面的起止位置.逻辑是以当前页码为参照点,根据需要显示的页码按钮个数,计算参照点前后的页码数量. 当起止点小于1或者…

头同尾合十的算法_乘法速算之首同尾合十

两位数乘两位数中&#xff0c;有一种特殊情况不需要列竖式&#xff0c;可以直接说出答案&#xff0c;那就是“首同尾合十”——十位相同&#xff0c;个位数字之和是10。一、巧算方法前两位&#xff1a;十位数字(十位数字1)&#xff0c;后两位&#xff1a;个位相乘例如&#xff…