博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate中ManyToMany的第三张表添加其他字段
阅读量:5164 次
发布时间:2019-06-13

本文共 2468 字,大约阅读时间需要 8 分钟。

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
coupons = new ArrayList
(); //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
users=new ArrayList
(); //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

转载于:https://www.cnblogs.com/xingyyy/p/3801560.html

你可能感兴趣的文章
BZOJ 3747 洛谷 3582 [POI2015]Kinoman
查看>>
vue实战(7):完整开发登录页面(一)
查看>>
Visual Studio自定义模板(二)
查看>>
【Mood-20】滴滤咖啡做法 IT工程师加班必备 更健康的coffee 项目经理加班密鉴
查看>>
读《构建之法-软件工程》第四章有感
查看>>
使用 Printf via SWO/SWV 输出调试信息
查看>>
.net 分布式架构之分布式锁实现(转)
查看>>
吴恩达机器学习笔记 —— 3 线性回归回顾
查看>>
Problem E: Automatic Editing
查看>>
SpringBoot 使用 MyBatis 分页插件 PageHelper 进行分页查询
查看>>
《DSP using MATLAB》Problem 6.17
查看>>
微信公众平台开发实战Java版之如何网页授权获取用户基本信息
查看>>
一周TDD小结
查看>>
sizeof与strlen的用法
查看>>
Linux 下常见目录及其功能
查看>>
开源框架中常用的php函数
查看>>
nginx 的提升多个小文件访问的性能模块
查看>>
set&map
查看>>
集合类总结
查看>>
4.AE中的缩放,书签
查看>>