【转载】JPA之@OneToMany、@ManyToOne、@JoinColumn

2024-04-02 18:32

本文主要是介绍【转载】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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/870735

相关文章

使用Spring Boot集成Spring Data JPA和单例模式构建库存管理系统

引言 在企业级应用开发中,数据库操作是非常重要的一环。Spring Data JPA提供了一种简化的方式来进行数据库交互,它使得开发者无需编写复杂的JPA代码就可以完成常见的CRUD操作。此外,设计模式如单例模式可以帮助我们更好地管理和控制对象的创建过程,从而提高系统的性能和可维护性。本文将展示如何结合Spring Boot、Spring Data JPA以及单例模式来构建一个基本的库存管理系统

提问的智慧(转载)

此文让我受益良多。值得一读,大家如果也觉得不错就一起来推~~~   ---------------------------------      在黑客世界里,当提出一个技术问题时,你能得到怎样的回答?这取决于挖出答案的难度,同样取决于你提问的方法。本指南旨在帮助你提高发问技巧,以获取你最想要的答案。       首先你必须明白,黑客们只偏爱艰巨的任务,或者能激发他们

Struts2常用标签总结--转载

Struts2常用标签总结 一 介绍 1.Struts2的作用 Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。 Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于

【转载】ACM感悟

今天看了一篇我们学校前辈的ACM的感悟,觉得写的十分有道理,这里转载,文章还会不断的改进和更新。 原文链接:http://www.cnblogs.com/Chierush/p/3760870.html?ADUIN=1339764596&ADSESSION=1401536826&ADTAG=CLIENT.QQ.5329_.0&ADPUBNO=26349 声明:本文是写给弱校ACM新手的一点

spring data jpa 懒加载问题

使用spring-data-jpa+spring+springmvc+restful的时候,碰到了一个问题,就是懒加载的问题。因为是后端返回的是JSON数据,所以如果在要额皮质懒加载的的关联字段的时候,只是配置 @ManyToOne(fetch=FetchType.LAZY)               @JoinColumn(name = "cat_measurement") 这样会报一个错误

转载 SPI的比喻理解

SPI 传输是一个虚拟的移位寄存器方式。 你这么理解就可以: 主机和从机之间有一条 16 格的传送带。主机一格一格拨动它转动(相当于发送时钟)。 如果是主机发送,它就把一个个的东西放在传送带上,转动 8 次,就传到从机一侧了。这时,从机可以从传送带上将东西取下。如果从机没有取东西,这些东西再转 8 次又回到主机一侧。 如果是主机接收,从机就要把 8 个东西一次放上传送带。当主机转动 8 次,东西就

转载:从小白鼠试毒问题-海明码

问题提出: 有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出哪瓶水有毒? 问题分析: 需要多少只小白鼠?这个很容易想到是10只(二进制),但是如何鉴别哪一瓶水有毒?(即如何安排小白鼠?)原贴如下:https://blog.csdn.net/mengtnt/article/details/8477747 海明码计算: 转载

[转载]20本经典云计算书籍和内容简介

云计算 : 深刻改变未来 内容简介 · · · · · · 本书概述了云计算的起源、发展以及商业模式,介绍了云计算的关键技术、典型应用以及开源软件和社区。 云计算既是机遇也是挑战,中国科技何去何从?需要从国家层面重视云计算,在教育、普及、重点研发、示范工程等诸多领域对其进行统筹规划,从而推动云计算在中国的发展,并最终使云计算造福百姓,惠及国民经济,推动科

SpringBoot(JPA关联)

JPA多表查询 多表查询在spring Data JPA 中有两种实现方式,第一种是创建一个结果集的接口来接收多表联接查询后的结果,第二种是利用JPA的关联映射来实现。 示例代码 多表联接查询 实体类Role @Entity@Table(name = "sys_role")@Datapublic class Role {@Id@GeneratedValue(strateg

将自己的工程开源到GitHub---转载记录保存

1.1 工程中创建Module   最开始你可能自己写了个工程,感觉不错,进行了一定的封装和优化,想留作开发下一个App时用或者给别人用。但是每次复制粘贴代码显得繁琐,还要处理一堆的package name和import错误。于是你想着把它改造成独立的工程,每次整个工程复制进去,设置引用就可以了。这就要使用Android Studio的module了。以前,你的工程只有一个Module,就是(M