SpringData Manytomany 中间表添加额外字段
SpringData Manytomany 中间表添加额外字段
- Course跟user是两张多对多关联表
- 添加中间表实体类,表名跟多对多插入的中间表一致
- 说明
- 参数说明
Course跟user是两张多对多关联表
//省略部分不相关代码以及getter跟setter
/*** 课程列表*/
@ApiModelProperty(hidden = true)
//放弃延时加载,改为立即加载
@ManyToMany(cascade = CascadeType.PERSIST)
@JoinTable(name = "t_user_course",joinColumns = {@JoinColumn(name="user_id",referencedColumnName = "id")},inverseJoinColumns = {@JoinColumn(name="course_id",referencedColumnName = "id")})
private List<Course> courses = new ArrayList<>();
课程表内容
//省略部分不相关代码以及getter跟setter
@ManyToMany(mappedBy = "courses")
private Set<User> users = new HashSet<User>();
添加中间表实体类,表名跟多对多插入的中间表一致
中间表UserCourse内容
package com.fuju.pojo;import java.sql.Timestamp;
import java.util.Date;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;import org.hibernate.annotations.Generated;
import org.hibernate.annotations.GenerationTime;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;/*** 用户课程中间表* @author Administrator**/
@Entity
@Table(name = "t_user_course")
@EntityListeners(AuditingEntityListener.class)
public class UserCourse {//省略getter跟setter/*** 主键ID*/@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Columnprivate Integer id;/*** 创建时间(中间表额外字段)*/@Column(name = "createTime",columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP",updatable = false,nullable = false)@Generated(GenerationTime.INSERT)private Timestamp createTime;}
说明
由于中间表的数据是自动插入的,一开始采用的是如下方法添加创建时间
/*** 创建时间*/@CreatedDate@Column(name = "createTime",updatable = false,nullable = false)private Date createTime;
以上方式存在问题
插入数据的时候执行的是如下语句
Hibernate: insert into t_user_course (user_id, course_id) values (?, ?)
插入的时候并没有给createTime
赋值,导致系统报错
参数说明
注解@org.hibernate.annotations.Generated
来标识一个已生成属性
GenerationTime
的可用的设置选项是ALWAYS
和INSERT
当使用ALWAYS
的时候,Hibernate每次执行SQL UPADATE或者INSERT插入的时候就会刷新实体
使用GenerationTime.INSERT
,只会在SQL INSERT的时候出现,来获取数据库的默认值
属性也应该标识为只读,只读属性使用注解@Column
的updatable
和insertable
来实现
如果两个都设置了false
,属性列表就用于不会在INSERT
或者UPADATE
语句中出现了,这些列的数值就由数据库来产生值
@ColumnDefault
属性注解,设置列表的默认属性,当hibernate导出和生成SQL schenma DDL的时候
@Temporal
注解来声明映射的SQL数据类型,如果使用了converter转换器之后,注解是不需要了
@Column(columnDefinition="timestamp default current_timestamp comment '购买时间")
可以设置默认值、可以生成注释
SpringData Manytomany 中间表添加额外字段相关推荐
- hibernate annotation多对多中间表添加其他字段的第三种方法
本示例主要以学生(T_Student)和课程(T_Course)之间的多对多关系,中间表Score(分数),学生表和课程表是多对多关系,另外为他们的关系添加额外的字段---分数: T_Student类 ...
- MySQL数据表添加新字段
我们不关注约束条件,只添加字段. 在表的最后位置添加新字段(默认) 语法: ALTER TABLE 表名ADD 新字段名 数据类型 约束条件; 在表的开头位置添加新字段 语法: ALTER TABLE ...
- Excel 透视表 - 添加计算字段
我们的透视表中,都是通过已有的原数据汇总得到的,如果我们想看的字段是表中没有的,并且需要复杂计算才能得来的,那么怎么办呢? 我们需要添加计算字段 原有的数据只有员工信息以及月薪,现在想添加涨薪后月薪情 ...
- 批量修改数据库,比如给数据库的某个表添加一个字段
批量修改数据库,比如添加一个字段,如下 SELECT CONCAT('ALTER TABLE ',TABLE_SCHEMA,'. tp_client ADD from_uid INT(11) NOT ...
- mongoDb 给表添加+ 删除字段
1 .添加一个字段. url 代表表名 , 添加字段 content. 字符串类型. db.url.update({}, {$set: {content:""}}, {multi ...
- sql 给已有的表添加一个字段和备注
格式: ALTER TABLE 表名 ADD 字段名称 字段类型(字段长短-选填) NOT NULL(是否不可为空) DEFAULT 0(默认值) COMMENT '已经跑批给SAS的维度数目之和'( ...
- 中间表增加额外字段_知识分享 I 这样显示报表筛选字段 你学会了吗
数据透视表创建完成后,报表筛选区域如果有多个筛选字段,系统会默认筛选字段的显示方式为垂直并排显示,如图所示. 为了使数据透视表更具可读性并易于操作,可以采用以下方法水平并排显示报表筛选区域中的多个筛选 ...
- 你不知道的copy、cut、paste事件——实现页面内容禁止复制,实现复制内容添加额外字段,比如复制请注明出处
聊聊copy复制.cut剪切.paste粘贴事件. 首先这三个事件都属于ClipboardEvent事件(剪切板事件).什么意思呢?这个三个事件的事件对象event其实都是ClipboardEvent ...
- mysql建立电影表_【代码片段】MySQL新建表添加基础字段
MySQL数据库表中,经常会用到的三个字段 SQL建表时,直接插入 gmt_create datetime null comment '创建时间', gmt_modified datetime nul ...
最新文章
- pyhon制作word、excel、ppt转pdf转换器大作战
- 批量选中删除(包含全选)---jsp,servlet
- python 不同模块之间的引用错误问题
- Weird Game CodeForces - 299C
- 求序列最长不下降子序列_最长不下降子序列nlogn算法详解
- golang延时_Golang 定时器底层实现深度剖析
- [渝粤教育] 西南科技大学 机电传动控制 在线考试复习资料
- 自适应控制——仿真实验一 用李雅普诺夫稳定性理论设计自适应规律
- 新一代天气雷达信息共享平台
- Ubuntu18.04运行QQ音乐
- 前后坐人书柜书桌的标准做法
- Silvaco TCAD仿真1——TCAD概述
- 小波自适应阈值选取python_小波去噪阈值如何选取_小波阈值分析 - 全文
- 顶层Makefile学习记录
- 2021泰安高考成绩排名查询,泰安高中学校排名2021最新排名,泰安高中排名前十
- 前端AI语音方面的实现
- php解密方法,六种php加密解密方法实例讲解
- 【论文精读】NeRF详解
- reactos终于被成功编译通过
- 图灵 计算机 ppt,turing machine 图灵机.ppt