项目中使用实体之间存在一对多@OneToMany,多对一@ManyToOne的映射关系,怎么设置呢?

GitHub地址:https://github.com/AngelSXD/myagenorderdiscount可以查看完整项目

下面给一个例子:

类似于一个部门对应多个员工

这里给出 一个流水账单对应多条订单折扣信息

流水账单类:

package com.agen.orderdiscount.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.hibernate.annotations.GenericGenerator; import javax.persistence.*;
import java.util.Date;
import java.util.List; /**
* 流水账单
* 请求提现以后,被记录在流水账单
* @author SXD
* @date 2018/1/16
*/
@Data(staticConstructor = "of")
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Entity
@GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator" )
public class RunningAccount { /**
* 账单ID
*/
@Id
@GeneratedValue(generator = "uuid2")
@Column(length = 36)
private String raId;
/**
* 流水账单编号
*/
@Column(nullable = false,length = 100)
private String raSn;
/**
* 流水金额
*/
@Column(nullable = false,precision = 10,scale = 2)
private Double raAccount;
/**
*流水账时间
*/
@Column(nullable = false)
private Date raDate;
/**
* 流水账单 状态
* 1 请求提现
* 2 通过提现请求,提现成功
* 3 拒绝提现请求,提现失败
* 4 通过部分提现请求中的订单,拒绝部分提现请求中的订单
*
*/
@Column(nullable = false)
private Integer accountStatus;
/**
* 操作来源
*/
@Column(nullable = false,length = 20)
private String raOperater;
/**
* 流水备注1
*/
@Column(length = 500)
private String ratCre1;
/**
* 流水备注2
*/
@Column(length = 500)
private String ratCre2; /**
* 关联子集流水账单
* 例如:本次提现 涉及到哪些订单,这些订单分别对应哪些可提现的流水
*
* mappBy表示关系被维护端,只有关系端有权去更新外键。
* 这里还有注意OneToMany默认的加载方式是赖加载。当看到设置关系中最后一个单词是Many,那么该加载默认为懒加载
*/
@OneToMany(cascade = {CascadeType.REFRESH,CascadeType.MERGE},mappedBy = "parentRa",fetch = FetchType.EAGER)
private List<AvAmount> childAvamounts; }

订单折扣信息类:

package com.agen.orderdiscount.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.hibernate.annotations.GenericGenerator; import javax.persistence.*;
import java.util.Date; /**
* 可提现金额
* 报告完成,订单完结 从预估金额存入可提现金额
* @author SXD
* @date 2018/1/16
*/
@Data(staticConstructor = "of")
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Entity
@GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator" )
public class AvAmount { /**
* 可提现ID
*/
@javax.persistence.Id
@GeneratedValue(generator = "uuid2")
@Column(length = 36)
private String Id;
/**
* 本次转入可提现金额
*/
@Column(nullable = false,precision = 10,scale = 2)
private Double avAccount;
/**
* 本条可提现金额记录 状态
* 1 可提现
* 2 请求提现,正在等待处理
* 3 已经成功转账,提现成功
* 4 不满足提现条件,被拒绝提现请求的
*
*/
@Column(nullable = false)
private Integer amountStatus;
/**
* 本次转入时间
*/
@Column(nullable = false)
private Date avDate;
/**
* 订单ID
*/
@Column(nullable = false)
private Integer orderId;
/**
* 订单编号SN
*/
@Column(nullable = false,length = 20)
private String orderSn;
/**
* 机构ID
*/
@Column(nullable = false)
private Integer adminId;
/**
* 产品ID
*/
@Column(nullable = false)
private Integer productId;
/**
* 会员ID
*/
@Column(nullable = false)
private Integer memberId;
/**
* 采样包ID
*/
@Column(nullable = false)
private Integer cybId;
/**
* 操作来源
*/
@Column(nullable = false,length = 20)
private String avOperater;
/**
* 可提现金额备注1
*/
@Column(length = 500)
private String avCre1;
/**
* 可提现金额备注2
*/
@Column(length = 500)
private String avCre2; /**
* 关联流水账单记录
*
* 这里设置JoinColum设置了外键的名字,Available是关系维护端
*/
@ManyToOne(cascade = {CascadeType.MERGE,CascadeType.REFRESH})
@JoinColumn(name="parentRa")
private RunningAccount parentRa; }

【Jpa hibernate】一对多@OneToMany,多对一@ManyToOne的使用的更多相关文章

  1. Java进阶知识10 Hibernate一对多_多对一双向关联(Annotation+XML实现)

    本文知识点(目录): 1.Annotation 注解版(只是测试建表)    2.XML版 的实现(只是测试建表)    3.附录(Annotation 注解版CRUD操作)[注解版有个问题:插入值时 ...

  2. Hibernate一对多OnetoMany

    ------------------------Hibernate一对多OnetoMany 要点: 配置在一端. 1.如果是单向关联,即只在一端配置OneToMany,多端不配置ManyToOne.则 ...

  3. 转Hibernate 一对多关联的CRUD__@ManyToOne(cascade=(CascadeType.ALL))

    一:Group和Users两个类 假定一个组里有n多用户,但是一个用户只对应一个用户组. 1.所以Group对于Users是“一对多”的关联关系@OneToMany Users对于Group是“多对一 ...

  4. Hibernate一对多、多对一关联

    一对多.多对一关联:在多方加外键 示例:Group(一方)和User(多方),一个Group可以有多个User,每个User只能属于一个Group   多对一单向关联 在User(多方)中建Group ...

  5. Hibernate关联映射(多对一 --- many-to-one)

    转自:https://blog.csdn.net/fengxuezhiye/article/details/7369786?utm_source=blogxgwz9 Hibernate的关联映射关系有 ...

  6. hibernate一对多和多对一配置

    public class Dept { private int deptId; private String deptName; // [一对多] 部门对应的多个员工 private Set<E ...

  7. Hibernate一对多、多对一的关系表达

    一.关系表达: 1.一对多.多对一表的关系: 学生表: 班级表: 在学生表中,学生的学号是主键.在班级表中,班级号是主键,因此,学生表的外键是classno.因此,班级对应学生是一对多,学生对应班级是 ...

  8. Hibernate 一对多,多对多,多对一检索策略

    一.概述 我们先来谈谈检索数据时的两个问题: 1.不浪费内存   2.更好的检索效率 以上说的问题都是我们想要避免的,接下来就引出了我们要讨论的话题---------------hibernate检索 ...

  9. Hibernate—— 一对多 和 多对多关联关系映射(xml和注解)总结(转载)

    One to Many 映射关系 多对一单向外键关联(XML/Annotation) 一对多单向外键关联(XML/Annotation) 懒加载和积极加载 一对多双向外键关联(XML/Annotati ...

  10. JPA的一对多,多对多用法

    一.@OneToOne关系映射 JPA使用@OneToOne来标注一对一的关系. 实体 People :用户. 实体 Address:家庭住址. People 和 Address 是一对一的关系. 这 ...

随机推荐

  1. 安装repo

    $ sudo apt-get install curl -y$ curl "http://android.git.linaro.org/gitweb?p=tools/repo.git;a=b ...

  2. 【Alpha】Scrum Meeting 5-end

    第一天:2019/6/19 前言: 第5次会议在6月19日由PM在教9C-501召开. 总结项目,进行单元测试并进行简单的整合.时长60min. 团队GitHub仓库 仓库连接 1.1 今日完成任务情 ...

  3. vim 查找替换命令

    http://vim.wikia.com/wiki/Search_and_replace

  4. 基于JQuery的WEB套打设计器jatoolsPrinter1.0

    开发web套打应用时,如快递单打印,一般要经过以下步骤:1. 扫描快递单据,保存成一个图片文件2. 将底图作成<img>3. 在<img>上放置打印项,试着打印到打印机,观察有 ...

  5. Redhat7配置yum源(本地源和网络源)

    Redhat7配置yum源(本地源和网络源)   目录 一:配置本地yum源 二:配置网络yum源 YUM(Yellow dog Updater Modified): yum是基于RPM包构建的软件更 ...

  6. linux 基础 软件的安装 *****

    一软件的安装   原代码与tarball 源代码---->编译------>可执行文件 查看文件类型   file命令    是否是二进制文件 注意如果文件的可执行权限 .c结尾的源文件- ...

  7. [错误处理]Vim卡死,无法输入是怎么回事?是不是按了Ctrl+S

    在linux下使用终端的时候常常不经意的就僵死了,只能够重启来解决这个问题,后来发现常常是因为按了Ctrl+s. 经过查询Ctrl + s在终端下的含义是暂停使用该终端的用途,如果需要启用终端,需要按 ...

  8. linux 命令 笔记

    ftp添加用户步骤: 创建目录 sudo mkdir /home/www 为目录添加用户 sudo useradd -d /home/uftp -s /bin/bash uftp 添加用户权限 sud ...

  9. 【Luogu】P3205合唱队(区间DP)

    题目链接 通过这题我发现我已经不会DP了 区间DP,f[i][j]是从左面转移来的,d[i][j]是从右面转移来的 然后DP方程是 ]) f[i][j]+=f[i+][j]; ][j]; f[i][j ...

  10. LCT(Link-Cut Tree)

    Link-cut tree(LCT)[可以理解为树链剖分+splay] 给出如下定义: access(x):访问x节点 perferred child:若以x为根的子树中最后被访问的节点在以x的儿子y ...