【Jpa hibernate】一对多@OneToMany,多对一@ManyToOne的使用

简介: 项目中使用实体之间存在一对多@OneToMany,多对一@ManyToOne的映射关系,怎么设置呢?GitHub地址:https://github.com/AngelSXD/myagenorderdiscount可以查看完整项目下面给一个例子:类似于一个部门对应多个员工这里给出 一个流水账单对应多条订单折扣信息 流水账单类:package com.

项目中使用实体之间存在一对多@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;



}
View Code

 

订单折扣信息类:

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;

}
View Code

 

相关文章
|
14天前
|
SQL XML Java
Hibernate - 单向多对一关联关系映射
Hibernate - 单向多对一关联关系映射
17 0
|
8月前
|
存储 Oracle Java
[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
|
10月前
|
SQL XML Java
Hibernate框架【四】——基本映射——多对一和一对多映射
Hibernate框架【四】——基本映射——多对一和一对多映射
110 0
|
Java 数据库连接
hibernate一对多关系操作
hibernate一对多关系操作
143 1
hibernate一对多关系操作
|
XML Java 数据库连接
《Hibernate上课笔记》------class6------Hibernate实现一对多关联映射
《Hibernate上课笔记》------class6------Hibernate实现一对多关联映射
46 0
《Hibernate上课笔记》------class6------Hibernate实现一对多关联映射
|
Java 数据库连接 API
Spring整合Hibernate JPA
Spring整合Hibernate JPA
80 0
|
XML Java 关系型数据库
hibernate里面的一对多关系映射
hibernate里面的一对多关系映射
89 0
|
存储 Java 数据库连接
【框架】[Hibernate]利用Hibernate进行一对多的级联操作-Web实例
【框架】[Hibernate]利用Hibernate进行一对多的级联操作-Web实例
155 0
【框架】[Hibernate]利用Hibernate进行一对多的级联操作-Web实例
|
Java 数据库连接 网络安全
【SSH快速进阶】——Hibernate 多对一映射 和 一对多映射
上两篇文章说了一对一映射,这里说一下多对一 和 一对多的映射情况。
【SSH快速进阶】——Hibernate 多对一映射 和 一对多映射
|
缓存 Java 数据库连接
Hibernate一对多关联的两个关键属性cascade和inverse(十一)
Hibernate一对多关联的两个关键属性cascade和inverse(十一)
Hibernate一对多关联的两个关键属性cascade和inverse(十一)