mappedby 详解
mappedby=?,后面的这个问号跟拥有方,以下是实例。
Role.java
package com.nbg.nuskin.oa.domain;import java.util.HashSet;
import java.util.Set;import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;/*** * * @author Administrator* */
@Entity
public class Role {private long id;private Set<Privilege> privileges = new HashSet<Privilege>();@Id@GeneratedValuepublic long getId() {return id;}public void setId(long id) {this.id = id;}//大家一定要注意这里,没有mappedby,拥有方是属于privilege的@ManyToManypublic Set<Privilege> getPrivileges() {return privileges;}public void setPrivileges(Set<Privilege> privileges) {this.privileges = privileges;}}
Privilege.java
package com.nbg.nuskin.oa.domain;import java.util.HashSet;
import java.util.Set;import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;@Entity
public class Privilege {private Long id;private Set<Role> roles = new HashSet<Role>();@Id@GeneratedValuepublic Long getId() {return id;}public void setId(Long id) {this.id = id;}//拥有方是Privilege.java@ManyToMany(mappedBy = "privileges")public Set<Role> getRoles() {return roles;}public void setRoles(Set<Role> roles) {this.roles = roles;}}
下面是RoleAction.java对Role的操作
package com.nbg.nuskin.oa.action;import java.util.HashSet;
import java.util.List;import javax.annotation.Resource;import com.nbg.nuskin.oa.domain.Privilege;
import com.nbg.nuskin.oa.domain.Role;
import com.nbg.nuskin.oa.service.PrivilegeService;
import com.nbg.nuskin.oa.service.RoleService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;public class RoleAction extends ActionSupport implements ModelDriven<Role> {private RoleService roleService;protected Role model = new Role();public RoleService getRoleService() {return roleService;}@Resource(name = "roleService")public void setRoleService(RoleService roleService) {this.roleService = roleService;}/*** 设置权限* * @return*/public String setPrivilege() {Role role = roleService.getById(model.getId());System.out.println(role.getName()+";"+role.getDescription());List<Privilege> privileges = privilegeService.getByIds(privilegeIds);role.setPrivileges(new HashSet<Privilege>(privileges));roleService.update(role);return "toList";}public Long[] getPrivilegeIds() {return privilegeIds;}public void setPrivilegeIds(Long[] privilegeIds) {this.privilegeIds = privilegeIds;}}
只有这样设置mappeby,在上面的action中才能够操作相应的privilege
mappedby原理:被拥有方改变,即拥有方主动关联操作关联关系;拥有方改变,不一定操作相关的关联关系
上面的mappedby如果设在roles这边,privileges就不会进行sql的update操作。
版权声明:本文为博主原创文章,未经博主允许不得转载。
转载于:https://my.oschina.net/u/2325575/blog/496394
mappedby 详解相关推荐
- 一对一关联查询注解@OneToOne的实例详解
表的关联查询比较复杂,应用的场景很多,本文根据自己的经验解释@OneToOne注解中的属性在项目中的应用.本打算一篇博客把增删改查写在一起,但是在改的时候遇到了一些问题,感觉挺有意思,所以写下第二篇专 ...
- Hibernate对象关系映射详解之一对多关系映射
Hibernate对象关系映射详解之"一对多"关系映射 之前学习Hibernate框架的时候,对这七大关系映射一直是云里雾里的,虽然可以仿照写出代码,但是不能独立编写出来.鉴于工作 ...
- 一对一关联查询注解@OneToOne的实例详解(一)
转载自: https://www.cnblogs.com/boywwj/p/8092915.html 一对一关联查询注解@OneToOne的实例详解 表的关联查询比较复杂,应用的场景很多,本文根据自己 ...
- Spring data JPA 之 Jackson 在实体里面的注解详解
8 Spring data JPA 之 Jackson 在实体里面的注解详解 经过前⾯课时的讲解,相信你已经对实体⾥⾯的 JPA 注解有了⼀定的了解,但是实际⼯作中你会发现实体⾥⾯不仅有 JPA 的注 ...
- @OneToOne实例详解
主要是这一截: @Id// id自动生成@GeneratedValue@Column(name = "id")private Long id;@Column(name = &quo ...
- JPA+MySQL详解
JPA+MySQL详解 首先明确两个端的关联关系,在java实体类定义中,含有mappedBy属性的时关系被维护端,含有关联字段的是关系维护端. 一.OneToOne关联关系 假设有实体People和 ...
- 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)
首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...
- JVM年轻代,老年代,永久代详解
秉承不重复造轮子的原则,查看印象笔记分享连接↓↓↓↓ 传送门:JVM年轻代,老年代,永久代详解 速读摘要 最近被问到了这个问题,解释的不是很清晰,有一些概念略微模糊,在此进行整理和记录,分享给大家.在 ...
- docker常用命令详解
docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...
- 通俗易懂word2vec详解词嵌入-深度学习
https://blog.csdn.net/just_so_so_fnc/article/details/103304995 skip-gram 原理没看完 https://blog.csdn.net ...
最新文章
- 电子自动窗帘系统c语言程序,单片机自动窗帘控制程序(两个电机)
- python网络爬虫的基本步骤-详解Python网络爬虫功能的基本写法
- 敏捷宣言 敏捷原则_2018年最受欢迎的敏捷文章
- (最短路径算法整理)dijkstra、floyd、bellman-ford、spfa算法模板的整理与介绍
- java 过滤器(参数传递中文乱码)
- express url跳转(重定向)的实现:res.location() res.redirect()
- 直播网站源码,简洁的登录页面
- 记录用HDFview和Panoply软件打开nc文件
- rancher 修改IP
- Java学习(10) —— 常用类
- unity避免相机穿墙
- MLO/uboot-spl.bin和uboot.img/uboot.bin
- 纯前端项目文件部署到远程服务器
- 9个妙招教你玩转微信
- 禁止html5手机端双击页面放大的问题,主要针对苹果手机
- Appium元素定位操作app
- 我总结了五种常用聚类分析算法,推荐收藏
- 产品公司解决方案、解决方案公司解决方案,可能你做了一辈子IT你也不知道...
- HackTheBox –Craft实战
- 第一届华数杯A题完整思路分享