@OneToMany三种设置方式详解

java springboot中@OneToMany、@ManyToOne以及@ManyToMany讲解 阅读详情
   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
      
package footmark.springdata.jpa.domain;
import java.util.ArrayList;
import java.util.Collection;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import org.apache.log4j.Logger;
@Entity
public class Custom {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(Custom.class);
private Long custId;
private String detail;
private Collection<Address> addresses = new ArrayList<Address>();
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getCustId() {
return custId;
}
public String getDetail() {
return detail;
}
/*
* 三种配置方式:
* 1. @OneToMany(cascade= {CascadeType.ALL},fetch=FetchType.LAZY ,mappedBy="customId")
* mappedBy属性用于双向关联实体时使用,
* mappedBy属性:用在双向关联中,把关系的维护权反转 ; 跟hibernate XML映射中的property-ref一样。
*
* JPA执行步骤:一、插入数据到CUSTOM表,
* 二、执行getAddresses()获取需要持久化的ADDRESS(ADDRESS必须代码设置外键CUSTID),
* 三、插入数据到ADDRESS表
*
* 2.@OneToMany(cascade= {CascadeType.ALL},fetch=FetchType.LAZY )
* JPA执行步骤: 一、插入数据到CUSTOM表,
* 二、执行getAddresses()获取需要持久化的ADDRESS(ADDRESS代码不需要设置外键CUSTID),ADDRESS和CUSTOM关系保存在关联表中;
* 三、插入数据到ADDRESS表
* 四、插入关联信息到CUSTOM_ADDRESS 表中
* 另外关联表的字段对应关系也可以手工设置,
* @JoinTable(name="ref_customer_address",
* joinColumns={@JoinColumn(name="customer_id",referencedColumnName="custId")},
* inverseJoinColumns={@JoinColumn(name="address_id",referencedColumnName="addrId")}
*
* 3.@OneToMany(cascade= {CascadeType.ALL},fetch=FetchType.LAZY )
* @JoinColumn(name="customer_id") 对应的是表中的字段,会在最后一步进行该字段的更新
* 该设置属于单向关联, 该设置需要执行三条SQL操作,不推荐;JPA推荐第一种和第二种做法;
* JPA执行步骤如下:一、插入数据到CUSTOM表,
* 二、执行getAddresses()获取需要持久化的ADDRESS(ADDRESS必须代码设置外键CUSTID或者将外键属性设置为可以为空),
* 三、插入数据到ADDRESS表
* 四、 然后再UPDATE ADDRESS 设置外键关系customer_id
*
* 4.另外多端需要初始化一个空数组
* private Collection<Address> addresses = new ArrayList<Address>();
*
* */
//级联操作
@OneToMany(cascade= {CascadeType.ALL},fetch=FetchType.LAZY ,mappedBy="customId" )
// 双向关联,mappedBy="customId" 不可共存 @JoinColumn(name="customer_id")
// 2 @JoinTable(name="ref_customer_address",
// joinColumns={@JoinColumn(name="customer_id",referencedColumnName="custId")},
// inverseJoinColumns={@JoinColumn(name="address_id",referencedColumnName="addrId")}
// )
public Collection<Address> getAddresses() {
if (logger.isDebugEnabled()) {
logger.debug("getAddresses() - start"); //$NON-NLS-1$
}
// cascade属性和mappedBy用在一起时,一定要通过调用双方的set方法来建立关系
for (Address add :addresses)
add.setCustomId(custId); //设置ADDRESS的CUSTOM外键
if (logger.isDebugEnabled()) {
logger.debug("getAddresses() - end"); //$NON-NLS-1$
}
return addresses;
}
public void pushAddress(Address add){
addresses.add(add);
}
public void setAddresses(Collection<Address> addresses) {
this.addresses = addresses;
}
public void setCustId(Long custId) {
this.custId = custId;
}
public void setDetail(String detail) {
this.detail = detail;
}
}

------------

package footmark.springdata.jpa.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Address {

private Long addrId;

private Long customId;

@Column(nullable=false)
public Long getCustomId() {
return customId;
}

public void setCustomId(Long customId) {
this.customId = customId;
}

private String detail;

@Id
@GeneratedValue(strategy= GenerationType.AUTO)
public Long getAddrId() {
return addrId;
}

public String getDetail() {
return detail;
}

public void setAddrId(Long addrId) {
this.addrId = addrId;
}

public void setDetail(String detail) {
this.detail = detail;
}
}
JPA中外键关联实体@OneToMany的使用 首先介绍我们的表结构,便于理解我们的demo,从而了解两个标签的使用 表结构 pet表,id主键,name宠物名,owner主人,age年纪,category_id外键关联category表 这里一个category对应多个pet,所以category是我们的一端,pet是我们的多端 category表,id主键,category_name种类名,category_code种类编码 标签的使用... 阅读详情

相关推荐

Hibernate @OneToMany 及 @Cascade级联操作

前言 由图中可以看出实体间关系:一对多(@OneToMany) 在实际开发场景中,删除员工老板不会被删除,老板被删除了员工肯定要删除 由此,就会使用级联操作,在一对多关系中,@Cascade属性(级联)只设置“一”的一方即可,外键由“多”的一方进行维护。 @ManyToOne和@OneToMany 注解 ManyToOne(多对一)单向:不产生中间表,但可以用@Joincolumn...

weixin_40361910的博客 965

关于@OneToMany详解

JPA 中@OneToMany的使用总结,踩过的坑下期分享

qq_50253423的博客 6771

JPA 中使用 @OneToMany 、@ManyToOne 等关系映射注解

JPA 做 ORM(Object Relational Mapping,对象关系映射)时,为了开发效率,通常会在实体类上用 hibernate 的关系关联注解。方法,可以解决了父子实体类打印输出时,因相互依赖循环嵌套中堆栈溢出问题;一起使用,既可以单向,也可以双向关联;)关系,一个组可以容纳多个学生,一对多;查询 GroupClass 对象,在输出打印对象的。该错误解决方法:在父类或子类对应的关联字段上,加上。,使用时会触发嵌套循环,造成栈溢出问题;外键关联,一般子实体类这边维护,因此由。

小张Python 5343

SpringData JPA中@OneToMany和@ManyToOne的用法详解

SpringData JPA中@OneToMany和@ManyToOne的用法详解

Lancis的博客 6499

AXI VIP配置全指南:从报错到成功仿真的完整流程(Vivado 2023版)

本文详细解析了在Vivado 2023环境中配置AXI Verification IP(VIP)进行协议仿真的完整流程。针对常见的include和import报错问题,提供了具体的解决方案和代码示例,指导用户从IP核创建、参数化配置,到构建可工作的仿真测试平台,最终实现成功仿真。

gpt4scribbler的博客 233

抖音视频数据获取实战:从API调用到热门内容挖掘

通过抖音API获取视频数据,企业可快速构建数据驱动的运营体系。本文提供了从权限申请到商业落地的全流程指南,建议结合自身业务扩展功能。如有技术问题,欢迎​​评论​​区留言讨论!#抖音开发 #数据挖掘 #短视频运营 #API调用 #Python实战。

WBKJ_Noah_的博客 6392

每周总结(@OneToMany的用法)

这周主要遇到的问题是开发一对多的关系,由于需求的变更,以前项目中的几个字段现在可以保存多选的情况,又因为这个字段还关联了其它的表,所以现在重新设计了数据库表,多的一方添加了外键关联,关联一的一方的主键,假设有个学校表school是一的一方,学生表student是多的一方,学生表中有sch_id外键关联学校表。建表语句如下: 学校表: Create Table CREATE TABLE `sc...

keyto1的博客 3万+

从零开始:用ZEMAX设计双高斯照相物镜的完整流程(附55mm焦距实例)

本文详细介绍了使用ZEMAX设计双高斯照相物镜的完整流程,特别针对55mm焦距实例进行了深入解析。从初始结构选择、参数设置到优化策略和像质分析,逐步指导读者掌握这一经典光学设计方法。通过具体实例展示了如何实现卓越的像差校正,适用于35mm相机标准镜头等应用场景。

onion的博客 706

Hibernate @OneToMany等注解设置查询过滤条件等

Hibernate @OneToMany等注解设置查询过滤条件等 使用注解@where @OneToMany(mappedBy = "parent") @Where(clause="deleted = false")//字符串拼接查询条件 private Set<Operation> children = new HashSet<>(); ...

qq_34287953的博客 840

DNF单机版搭建全攻略:从零开始到局域网联机(含常见问题解决)

本文提供详细的DNF单机版搭建指南,从环境配置到局域网联机设置,涵盖服务端安装、数据库配置及常见问题解决方案。适合新手和有经验的玩家,帮助快速搭建专属游戏服务器,重温经典游戏体验。

weixin_30832143的博客 847

python采集keep运动数据

我国2009年确立“全民健身日”;2012年,“广泛开展全民健身运动”写入十八大报告;到2014年上升为国家战略,全民健身的分量越来越重。推动全民健身和全民健康深度融合,通过全民健身实现全民健康。 全民健身运动在我国越来越普及,每天清晨和傍晚时分,城市的广场上、公园里,到处是运动健身的人们,跑步、打球、跳舞、游泳、打太极拳等运动项目十分丰富,人们在运动中获得越来越多的幸福感。 随之诞生出了很多运动app,例如keep,咪咕,微信等,大家可以通过app随时记录自己的运动数据,特别是对于很多的减肥人群来说,通过

Z_suger7的博客 5657

SpringData JPA中@OneToMany和@ManyToOne的使用

尝试一次简洁风格 环境:springboot2.1.7+jdk1.8+mysql8.0+druid1.1.10+Springdata JPA+Lombok 作者:cauchy6317在csdn 需求场景:学生和学校的业务设计 博文目标:使用这两个注解的正确姿势 pom.xml文件的dependencies见附录 Student类和School类 @Data @Table @Entity @Acce...

cauchy6317的博客 2万+

Word论文插入带有方括号序号的参考文献——尾注+交叉引用

文章目录1. 尾注功能2. 为参考文献的序号添加方括号3. 调整参考文献前的序号大小4. 重复引用同一参考文献5. 将交叉引用的序号改为带有方括号的上标序号格式6. 删除参考文献前的尾注横线 1. 尾注功能 首先使用尾注功能顺序插入参考文献,暂时不考虑方括号问题,具体操作如下: ① 将光标放在需要插入参考文献角标的地方 ② 在word菜单栏,“引用-脚注部分右下角箭头”(用来设置尾注格式) ③如...

Your_Raymond的博客 9万+

@ManyToOne @OneToMany

转载:@ManyToOne  @ManyToOne注解的这端,是多端 1.在注释@ManyToOne(cascade=CascadeType.REFRESH,optional=true)中将属性optional设置为true,这可以使得即使外键为空时仍可以向表中添加数据。 2.假设Person和Book是一对多的关系,其中Person的成员变量为: priv

刘春辉的小窝 1220

YOLOv9改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制

这篇文章带来一个经典注意力模块的汇总,虽然有些模块已经发布很久了,但后续的注意力模块也都是在此基础之上进行改进的,对于初学者来说还是有必要去学习了解一下,以加深对模块,模型的理解。

Limiiiing的博客 2892

MMCVDeformConv2d转TensorRT记录

MMCVDeformConv2d转Tensorrt

qq_35435798的博客 1778

JPA中@OneToOne 与 @OneToMany 的用法

Spring工程中,创建实体对象时,可以通过JPA的@Entity标识实体与数据库表的对应关系,@Column标识数据库字段。其中还有标识两个实体间关系的注解:@OneToOne、@OneToMany、@ManyToOne和@ManyToMany,分别标识一对一、一对多、多对一和多对多。在此,简单记录下@OneToOne和@OneToMany的使用。其中还会涉及注解@JoinColumn,其修饰的...

weixin_40910372的博客 2495

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

springdatajpa @ManyToOne、@OneToMany的使用

业务中会涉及多张表的查询,jpa对应着表关系有 @OneToOne, @OneToMany,@ManyToOne及 @ManyToMany; 今天只是简单说一下@OneToMany 在多方中注入 一方, 设置@JoinColumn 就不会产生中间表, 避免了不必要的sql查询; name设置为当前表中对应多方的关联字段(可以理解为从表中的外键); referencedColumnName为一方的关联字段(即主表的主键); 当使用JPA配置实体时,如果有两个属性(一个是一般属性,一个是多对一的属性)映射到数

qq_39256374的博客 3691

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

@OneToMany、@ManyToOne以及@ManyToMany讲解

一、一对多(@OneToMany) 1、单向一对多模型 假设通过一个客户实体可以获得多个地址信息。 对于一对多的实体关系而言,表结构有两种设计策略,分别是外键关联和表关联。 (1) 映射策略---外键关联 在数据库中表customer和表结构address定义,如下: create table customer ( id int(20) not null auto_increment...

hyl999的专栏 1225

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

@OneToMany @ManyToOne @ManyToMany@OneToOne格式

这里已订单为例: 主表里一条信息对应详情表里多条信息,即:@OneToMany @OneToMany(mappedBy="orderMaster") private Set<OrderDetail> orderDetailSet = new HashSet<OrderDetail>(); 详情表里多条信息对应主表里一条信息,即:@ManyToOne @JsonIg...

weixin_45335305的博客 442

JPA之@OneToMany、@ManyToOne、@JoinColumn

顾名思义,@OneToMany、@ManyToOne这两个注解就是处理一对多,多对一的关系 这两个注解是成双成对的,有了@OneToMany,一定会配置一个@ManyToOne OneToMany设置 设置OneToMany的具体方法如下: @Entity public class OrderEntity { @Id //... ...

dianlin1577的博客 740

@OneToMany and @OneToOne

@OneToMany and @OneToOne @OneToMany 默认情况下,JPA 为具有一对多多重性的多值关联定义一个 OneToMany 映射。 使用 @OneToMany 批注: 将获取类型配置为 LAZY 由于所使用的 Collection 不是使用一般参数定义的,因此配置关联的目标实体 配置必须层叠到关联目标的操作:例如,如果删除了拥有实体,则确保还...

Hi, Sun 202

JPA之级联关系@OneToMany 和 @ManyToMany

JPA之级联关系@OneToMany 和 @ManyToMany 1. 双向@OneToMany @Entity @Table(name = "TEACHER") public class Teacher { @Id @GenericGenerator(name = "jpa-uuid", strategy = "uuid") @GeneratedValue(genera...

XSemperFI的博客 744
上一篇: easyUI-combotree-树形下拉菜单
下一篇: Oracle函数
zq33312757
博客等级 码龄18年 3粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值