JPA之@OneToMany、@ManyToOne、@JoinColumn
顾名思义,@OneToMany、@ManyToOne这两个注解就是处理一对多,多对一的关系
这两个注解是成双成对的,有了@OneToMany,一定会配置一个@ManyToOne
OneToMany设置
设置OneToMany的具体方法如下:
@Entity
public class OrderEntity { @Id
//...
private String id; @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "parent")
private List<ListEntity> list = new ArrayList<ListEntity>(); }
具体说明:
cascade 级联操作
CascadeType. PERSIST 级联持久化 ( 保存 ) 操作
CascadeType. MERGE
级联更新 (
合并 )
操作
CascadeType. REFRESH
级联刷新操作,只会查询获取操作
CascadeType. REMOVE
级联删除操作
CascadeType. ALL
级联以上全部操作
fetch 加载类型,默认情况一的方为立即加载,多的一方为延迟加载
FetchType.LAZY 懒加载
FetchType.EAGER 立即加载(缺省值)
mappedBy 关系维护
mappedBy= "parent" 表示在ListEntity类中的 parent 属性来维护关系,这个名称必须和ListEntity中的parent属性名称完全一致才行
OneToMany必须写mappedBy,不然会多生成一张没用的中间表,因为如果没写mappedBy,JPA不知道具体怎样做关联
ManyToOne设置
设置ManyToOne的具体方法如下:
@Entity
public class ListEntity { @Id
// ...
private String id; @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "order_id", insertable = false, updatable = false)
private OrderEntity parent; @Column(name = "order_id")
private String orderId; }
具体说明:
fetch=FetchType.LAZY的意思是select的时候懒加载,当加载ListEntity这个对象的时候,会加载他的属性,如id, name,但是不会去加载parent的属性。如果是EAGER,
不仅会加载id,name等属性,而且会加载parent里面的属性。
@JoinColumn与@Column标记一样,是用于注释表中的字段的。它的属性与@Column属性有很多相同之处,例如name属性是用来标识表中所对应的字段的名
称,其它的不再详述。
@JoinColumn与@Column相区别的是:@JoinColumn注释的是保存表与表之间关系的字段,它要标注在实体属性上(相当于外键)。而@Column标注的是表
中不包含表关系的字段。
在这里,@JoinColumn指的是ListEntity(多)表对应OrderEntity(一)表关联字段的名称。即ListEntity中的orderId对应OrderList中的主键Id。
JPA之@OneToMany、@ManyToOne、@JoinColumn的更多相关文章
- JPA实体关系映射:@ManyToMany多对多关系、@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析
JPA实体关系映射:@ManyToMany多对多关系.@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析 今天程序中遇到的错误一 org.hibernate.A ...
- JPA(Hibernate) @OneToMany 两种例子
环境:Spring Data Jpa,hibernate或者其他jpa实现也是一样的:Spring Boot 场景:User和Role,一个User要对应多个Role. 第一种方式,没有中间关系表,直 ...
- hibernate one-to-many many-to-one 双向注解
建表语句: DROP TABLE IF EXISTS `t_company`; CREATE TABLE `t_company` ( `companyId` ) unsigned NOT NULL A ...
- spring-data-jpa 中,如果使用了one-to-many , many-to-one的注释,会在Jackson进行json字符串化的时候出现错误
问题: spring-data-jpa 中,如果使用了one-to-many , many-to-one的注释,会在Jackson 2.7.0 进行json字符串化的时候出现错误. 解决办法: 通过在 ...
- @OnetoOne @OnetoMany @ManyToOne(2)
在班主任(id,name,bjid) 班级(id name) 学生(id name bjid)的 关系中 班主任一对一关联班级 班级一对多关联学生 @OnetoOne @joinColumn(bjid ...
- spring boot jpa 多表关联 @OneToOne @OneToMany @ManyToOne@ManyToMany
1.一对一关联 @OneToOne import lombok.Data; import javax.persistence.*; /** * @Author: GWL * @Description: ...
- spring-data-jpa——如果使用了one-to-many,many-to-one的注解,在Jackson进行json字符串化时出现错误的解决方案
参考资料: http://blog.csdn.net/remote_roamer/article/details/51330843 http://blog.csdn.net/xiaodaiye/art ...
- one-to-many many-to-one配置解释
one-to-many放在某个文件的配置中,表示这个文件是ONE的一方, 同样的many-to-one放在某个文件的配置中,表示这个文件是many的一方.
- Spring Data Jpa(Hibernate) OneToMany
这个其实非常简单.假设有topic 和 subscriber两个实体类,不考虑关联关系,则连个类的代码如下: /** * Created by csonezp on 2017/8/31. */ @En ...
随机推荐
- .net4.0重新注册IIS 的方法
操作步骤如下: 1.开始 2.运行 3.cmd 4.cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 5.aspnet_regiis.exe -i
- .net core 滑动+点击汉字验证码
用 .net core 写的 滑动+点击汉字的验证码,代码比较简单就不做说明了. github地址 https://github.com/wangchengqun/NetCoreVerificat ...
- SQLite 编译错误 - 试图加载格式不正确的程序
刚开始用SQLite,刚开始写了一个小程序,连接数据库的时候出现了问题,提示试图加载格式不正确的程序, 原因是我当前工程的目标平台是X86,改成Any CPU之后问题就解决了.如下图:
- 用 vs 2017创建 windows 服务
转载自:http://www.cnblogs.com/xujie/p/5695673.html 1.新建windows服务项目,我这里选择的是Framework4.0,没有选择高版本是为了防止在服务在 ...
- InnoDB之锁机制
前两天听了姜老大关于InnoDB中锁的相关培训,刚好也在看这方面的知识,就顺便利用时间把这部分知识做个整理,方便自己理解.主要分为下面几个部分 1. InnoDB同步机制 InnoDB存储引擎有两种同 ...
- pageadmin CMS网站制作教程:模板概念解释
pageadmin CMS网站建设教程:模板概念解释 1.模板页 又叫视图页面,PageAdmin后台栏目或信息中用到的模板页面的统称,格式必须是.cshtml后缀文件,前端人员制作的页面默认都是ht ...
- Python 将一个时间戳格式化为(格林威治时间或者本地时区时间)
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数. 获取一个时间戳 import time times = time. ...
- jzoj5923
我們可以記f[i]表示i個點的連通圖的個數 則我們可以考慮將i個點不必聯通的圖個數(記為g)減去i個點的不連通圖個數 那麼f[i]=g[i]-c(j-1,i-1)f[j]gi-j 枚舉一個j,強制將j ...
- jzoj5805
#include<bits/stdc++.h> using namespace std; int x,n,pp,ct[10000]; long double f[210][(1<&l ...
- 什么是Ajax?Ajax的原理是什么?Ajax的核心技术是什么?Ajax的优缺点是什么?
Ajax是一种无需重新加载整个网页,能够更新部分网页的技术.Asynchronous JavaScript and XML的缩写,是JavaScript.XML.CSS.DOM等多个技术的组合. Aj ...