zoukankan      html  css  js  c++  java
  • Hibernate中ManyToMany的第三张表添加其他字段

    1、现在有优惠券Coupon表,用户User表和一张希望可以保存用户对优惠券是否使用信息的表

    User.class

    package com.life.hibernate.bean;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.JoinColumn;
    import javax.persistence.JoinTable;
    import javax.persistence.ManyToMany;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
    /**
     * @author JL
     * 用户类
     */
    @Entity
    // 实体类配置
    @Table(name="tb_user")
    // 表格配置
    public class User  {
        @Id //在表中的名称
        @GeneratedValue(strategy=GenerationType.AUTO) //自动增长
        private Integer id;
    /** * 一个用户可以用友多个优惠券 但优惠券只有自己的属性,没有用户的引用 单边的一对多关系 */
     @ManyToMany(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST }) @JoinTable(name = "tb_user_coupon", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "coupon_id", referencedColumnName = "id")) 
    // fetch配置加载方式(延迟或即时) // cascade配置级联方式,表示在增删查改user类时,会自动在数据库中保存、删除、修改、刷新属于他的Email对象
    private List<Coupon> coupons = new ArrayList<Coupon>(); 
    //get-set方法略  
    }

    Coupon.class

    package com.life.hibernate.bean;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.persistence.CascadeType;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToMany;
    import javax.persistence.ManyToOne;
    import javax.persistence.Table;
    
    @Entity
    @Table(name = "tb_coupon")
    public class Coupon extends BaseBean {
        @Id //在表中的名称
        @GeneratedValue(strategy=GenerationType.AUTO) //自动增长
        private Integer id;
        /**
         * 优惠券名称
         */
        private String name;
    
        @ManyToMany(mappedBy="coupons")
        private List<User> users=new ArrayList<User>();
        //get/set省略
    }

    2、在第三张表tb_user_coupon加一个字段布尔used

    package com.life.hibernate.bean;
    
    import javax.persistence.Entity;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.Table;
    
    @Entity
    @Table(name = "tb_user_coupon")
    public class UserCoupon {
        @Id //在表中的名称
        @GeneratedValue(strategy=GenerationType.AUTO) //自动增长
        private Integer id;
        private Boolean used = false;
        @ManyToOne
        @JoinColumn(name = "user_id")
        private User user;
        @ManyToOne
        @JoinColumn(name = "coupon_id")
        private Coupon coupon;
    
    }

    3、注意第三张表的几点配置

    (1)表名要与@JoinTable一致

    (2)两个@JoinTable的name分别保持一致,不然会产生其他的字段

    Done

  • 相关阅读:
    Something broke! (Error 500)——reviewboard
    linux内核--自旋锁的理解
    I.MX6 mkuserimg.sh hacking
    I.MX6 DNS 查看、修改方法
    I.MX6 android mkuserimg.sh
    I.MX6 AW-NB177NF wifi HAL 调试修改
    I.MX6 wpa_supplicant_8 编译问题
    I.MX6 MAC Address hacking
    I.MX6 MAC地址修改
    I.MX6 U-boot imxotp MAC address 写入
  • 原文地址:https://www.cnblogs.com/xingyyy/p/3801560.html
Copyright © 2011-2022 走看看