JPA 关联表添加关联条件@Where、@WhereJoinTable()
JPA 关联表添加关联条件,当我其中一个表的数据状态发送改变,不是业务上所需要的,这时实体查询还是会带出关联数据,所以我们需要处理这部分数据;第一种方式:删除中间表对应数据;第二种添加关联条件,按条件带出有效数据
- 代码示例
- 用户实体
@Entity@Table(name = "pmi_t_user")@org.hibernate.annotations.Table(appliesTo = "pmi_t_user",comment="用户信息表")@Component@ApiModel(value = "用户实体")public class User implements Serializable {private static final long serialVersionUID = -4618191047832700121L;/*** 主键id*/@ApiModelProperty(value = "主键id")@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;/*** 用户名*/@ApiModelProperty(value = "用户名", required = true)@NotBlank(message = "用户名不能为空")@Column(name = "user_name", nullable = false,columnDefinition="varchar(100) COMMENT '用户名'")private String userName;/*** 关联角色 db_status 是数据库角色表字段* @WhereJoinTable(clause = "db_status = 1")*/@ApiModelProperty(value = "关联角色")@ManyToMany(fetch = FetchType.EAGER,targetEntity = Role.class)@JsonIgnoreProperties(value = { "users" })@Where(clause = "db_status = 1")@JoinTable(name = "pmi_t_user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))@org.hibernate.annotations.ForeignKey(name = "none")private Set<Role> roles;}
- 角色
@Entity@Table(name = "pmi_t_role")@org.hibernate.annotations.Table(appliesTo = "pmi_t_role",comment="角色")@ApiModel(value = "角色")public class Role implements Serializable {private static final long serialVersionUID = 2376963713493278377L;/*** 主键id*/@ApiModelProperty(value = "主键id")@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;/*** 角色名称*/@ApiModelProperty(value = "角色名称")@NotNull(message = "角色名称不能为空")@Length(max = 20,min=1, message = "角色名称长度大于1小于20")@Column(name = "role_name", nullable = false,columnDefinition="varchar(20) COMMENT '角色名称'")private String roleName;/*** 数据状态 1:正常 -1:删除*/@ApiModelProperty(value = "数据状态")@Column(name = "db_status", nullable = false,columnDefinition="tinyint(4) DEFAULT '1' COMMENT '数据状态 1:正常 -1:删除'")private int dbStatus;}
- 查询效果:
- sql打印
JPA 关联表添加关联条件@Where、@WhereJoinTable()相关推荐
- MySQL为关联表添加数据
在student表和grade表中,添加外键约束,建立两个表的关联关系. 可以看到,student表的外键约束已经添加成功,此时,表student和表grade之间,就是多对一的关系 因为,外键列只能 ...
- mysql触发器 当记录的指定字段发生变化时,更新表中的另外一个字段,或者更新另外一张关联表中关联记录的字段...
2019独角兽企业重金招聘Python工程师标准>>> 注意:语句中出现的old,new,now(),都为数据库自带的关键字,此处不做解释. 两种情况: 第一种:一张表中,更新某条记 ...
- mysql实战:左表数据全部展示,关联表有关联数据返回1,没有关联数据返回0
场景描述 现在有一消息通知功能,后台发布的每条通知消息都会展示到APP端消息列表中,每条消息支持是否已读操作,从消息列表中点击进入详情视为完成已读操作:现在需要在查询出的用户消息列表信息,其中所有的通 ...
- gorm使用Joins方法查询关联表数据的示例
前言 gorm中的Joins方法只支持一对一关系.需要想要支持其它多关系表的查询,需要手写关联关系.只要记住下面的方式在看一下示例就很容易记住了: 一对一关系:只有一对一关系才能直接使用gorm原生的 ...
- mysql关联表删除、修改数据
mysql关联表删除.修改数据 关联删除 关联修改 关联删除 -- 多表关联查询删除: -- from 前面用表名的别名才可以,否则会修改失败: DELETE s,u1 FROM stu as s I ...
- SpringData Manytomany 中间表添加额外字段
SpringData Manytomany 中间表添加额外字段 Course跟user是两张多对多关联表 添加中间表实体类,表名跟多对多插入的中间表一致 说明 参数说明 Course跟user是两张多 ...
- jpa多表关联条件查询实现
通过实体类映射实现多表关联条件查询 jpa对于多表关联可以在实体类中进行关联映射,一对一用@OneToOne,一对多用@OneToMany,多对多用@ManyToMany,多对一用@ManyToOne ...
- jpa多表关联查询_JPA【关联查询篇】
摘要:本文主要介绍JPA的多表关联查询(一对一.一对多.双向关联.多对一.多对多)以及N+1查询的优化. 1. JPA多表关联查询 多表关联查询就是实现使用一个实体类对象操作或者查询多个表的数据. 配 ...
- java jpa自身关联查询_Spring Hibernate JPA 联表查询 复杂查询
关系类型Owning-SideInverse-Side one-to-one @OneToOne @OneToOne(mappedBy="othersideName") one-t ...
最新文章
- Java对象序列化详解
- apt来安装mysql5.7,linux系统ubuntu18.04安装mysql 5.7
- Android隐藏软键盘收回软键盘
- 如何考查自己的测试水平?
- 明知 | TypeScript 结合 egg.js 基本使用
- java标签组件命名_java编程规范之java命名规范
- (第三章)查看数据库
- Zabbix监控系统深度实践
- 你真的会用ABAP, Java和JavaScript里的constructor么? 1
- java 多线程 举例,Java多线程简单举例
- 【HUST】公选抢课|用Auto.js模拟蹲课过程
- 基于UDP协议的Java聊天室
- 禁止搜狗拼音输入法自动更新
- java 连接ftp服务器 从页面进行下载
- Kruskal重构树 学习笔记
- Web自动化测试-Protractor基础(二)
- 【Spring】定时任务
- SQLyog Ultimate 13.2 Crack
- 几种常用的网络路由交换协议【路由协议】
- ospf协议基本概念