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 详解相关推荐

  1. 一对一关联查询注解@OneToOne的实例详解

    表的关联查询比较复杂,应用的场景很多,本文根据自己的经验解释@OneToOne注解中的属性在项目中的应用.本打算一篇博客把增删改查写在一起,但是在改的时候遇到了一些问题,感觉挺有意思,所以写下第二篇专 ...

  2. Hibernate对象关系映射详解之一对多关系映射

    Hibernate对象关系映射详解之"一对多"关系映射 之前学习Hibernate框架的时候,对这七大关系映射一直是云里雾里的,虽然可以仿照写出代码,但是不能独立编写出来.鉴于工作 ...

  3. 一对一关联查询注解@OneToOne的实例详解(一)

    转载自: https://www.cnblogs.com/boywwj/p/8092915.html 一对一关联查询注解@OneToOne的实例详解 表的关联查询比较复杂,应用的场景很多,本文根据自己 ...

  4. Spring data JPA 之 Jackson 在实体里面的注解详解

    8 Spring data JPA 之 Jackson 在实体里面的注解详解 经过前⾯课时的讲解,相信你已经对实体⾥⾯的 JPA 注解有了⼀定的了解,但是实际⼯作中你会发现实体⾥⾯不仅有 JPA 的注 ...

  5. @OneToOne实例详解

    主要是这一截: @Id// id自动生成@GeneratedValue@Column(name = "id")private Long id;@Column(name = &quo ...

  6. JPA+MySQL详解

    JPA+MySQL详解 首先明确两个端的关联关系,在java实体类定义中,含有mappedBy属性的时关系被维护端,含有关联字段的是关系维护端. 一.OneToOne关联关系 假设有实体People和 ...

  7. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  8. JVM年轻代,老年代,永久代详解​​​​​​​

    秉承不重复造轮子的原则,查看印象笔记分享连接↓↓↓↓ 传送门:JVM年轻代,老年代,永久代详解 速读摘要 最近被问到了这个问题,解释的不是很清晰,有一些概念略微模糊,在此进行整理和记录,分享给大家.在 ...

  9. docker常用命令详解

    docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...

  10. 通俗易懂word2vec详解词嵌入-深度学习

    https://blog.csdn.net/just_so_so_fnc/article/details/103304995 skip-gram 原理没看完 https://blog.csdn.net ...

最新文章

  1. 电子自动窗帘系统c语言程序,单片机自动窗帘控制程序(两个电机)
  2. python网络爬虫的基本步骤-详解Python网络爬虫功能的基本写法
  3. 敏捷宣言 敏捷原则_2018年最受欢迎的敏捷文章
  4. (最短路径算法整理)dijkstra、floyd、bellman-ford、spfa算法模板的整理与介绍
  5. java 过滤器(参数传递中文乱码)
  6. express url跳转(重定向)的实现:res.location() res.redirect()
  7. 直播网站源码,简洁的登录页面
  8. 记录用HDFview和Panoply软件打开nc文件
  9. rancher 修改IP
  10. Java学习(10) —— 常用类
  11. unity避免相机穿墙
  12. MLO/uboot-spl.bin和uboot.img/uboot.bin
  13. 纯前端项目文件部署到远程服务器
  14. 9个妙招教你玩转微信
  15. 禁止html5手机端双击页面放大的问题,主要针对苹果手机
  16. Appium元素定位操作app
  17. 我总结了五种常用聚类分析算法,推荐收藏
  18. 产品公司解决方案、解决方案公司解决方案,可能你做了一辈子IT你也不知道...
  19. HackTheBox –Craft实战
  20. 第一届华数杯A题完整思路分享

热门文章

  1. Android小插件 —— 天气插件
  2. ns3学习之ns3模拟基本流程
  3. html5页面风格,H5页面设计风格大盘点!
  4. Adams 2020 安装教程
  5. 使用虚幻4进行安卓打包
  6. Echarts滚动条
  7. 微信小程序上传图片到Java后端
  8. 微信小程序实现上传图片的功能
  9. Java 面试学习指南
  10. 网银爬虫系统(爬取网银流水,爬取网银余额)难点分析