项目中使用实体之间存在一对多@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. poj 3281 Dining(网络流+拆点)

    Dining Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 20052   Accepted: 8915 Descripti ...

  2. luogu2698 [USACO12MAR]花盆Flowerpot

    单调队列+二分答案 #include <algorithm> #include <iostream> #include <cstring> #include < ...

  3. 递归函数的写法(以strcpy函数为例)

    1. 递归函数模板 递归的前提是,找到一个公共子问题(或公共操作),然后将该函数构造为递归函数. retType function( ... ) { 结束条件 { [处理] 返回 } 递归条件 { [ ...

  4. Spider爬虫-get、post请求

    1:概念: 爬虫就是通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程. 2:python爬虫与其他语言的比较: (1)php爬虫弊端:多进程多线程支持的不好 (2)java:代码臃肿,重 ...

  5. Jupyter Notebook与Jupyterhub的安装与配置

    Jupyter Notebook是一个很好用的交互环境,Jupyterhub则在此基础上实现了多用户的管理.最近配置这个环境的时候也遇到了一些坑,想想自己疯狂百度的过程,在此把自己的完整安装配置流程记 ...

  6. Hibernate的简单封装Session(方便调用)

    因为每次用增删改查时都需要用到hibernate的配置来生成session工厂进而生成session,比较麻烦,所以我们直接封装一个可以调用的类,需要的时候只需要调用即可. 新建一个Hibernate ...

  7. linux下编译静态库openssl

    先编译zlib cmake . -DCMAKE_INSTALL_PREFIX=/depends make make install 然后编译openssl ./config zlib no-rc5 n ...

  8. BZOJ3992 [SDOI2015]序列统计 【生成函数 + 多项式快速幂】

    题目 小C有一个集合S,里面的元素都是小于M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数 列,数列中的每个数都属于集合S.小C用这个生成器生成了许多这样的数列.但是小C有一个问题 ...

  9. ubuntu下卸载python2和升级python3.5

    卸载python只需一条语句就可以实现 sudu apt-get remove python ubuntu下安装python3 sudo apt-get install python3 但这样只安装了 ...

  10. 洛谷P1418 选点问题

    P1418 选点问题 74通过 240提交 题目提供者tinylic 标签云端 难度普及+/提高 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨论 非常重要!! 90分的点这里 题 ...