Hibernate之mappedBy

摘要:   一。mappedBy单向关系不需要设置该属性,双向关系必须设置,避免双方都建立外键字段   数据库中1对多的关系,关联关系总是被多方维护的即外键建在多方,我们在单方对象的@OneToMany(ma.........

  一。mappedBy 单向关系不需要设置该属性,双向关系必须设置,避免双方都建立外键字段

  数据库中1对多的关系,关联关系总是被多方维护的即外键建在多方,我们在单方对象的@OneToMany(mappedby=" ")

  把关系的维护交给多方对象的属性去维护关系

  对于mappedBy复习下:

  a) 只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性;

  b) mappedBy标签一定是定义在the owned side(被拥有方的),他指向theowning side(拥有方);

  c) 关系的拥有方负责关系的维护,在拥有方建立外键。所以用到@JoinColumn

  d)mappedBy跟JoinColumn/JoinTable总是处于互斥的一方

  二。下面是我自己的理解,一直对hibernate中的维护关联关系不太了解,总不知道他们具体指的是什么

  这里的维护关联关系,拿多对多来说就是中间表,在不设置cascade的情况下,中间表由负责维护关联关系的一方维护

  举例说明:

  Game 和User  两个实体类,他们是多对多的关系,有中间表t_game-user.

  在User中配置有:

  @ManyToMany(mappedBy="users")

  public List<Game> getGames() {

  return games;

  }

  Game中配置有:

  @ManyToMany

  @JoinTable(name = "t_game_user",

  joinColumns = {@JoinColumn(name = "game_id",referencedColumnName="gameId")},

  inverseJoinColumns = {@JoinColumn(name = "user_id",referencedColumnName="id")})

  public List<User> getUsers() {

  return users;

  }

  所以说由Game来维护他们的关联关系,即中间表

  表现形式:

  1.因为没有配置cascade所以分别给Game,User添加4条数据,然后手动在中间表中添加他们的关联关系

  2.在程序中执行删除User,

  Hibernate: delete from t_user where id=?

  Hibernate: delete from t_user where id=?

  Hibernate: delete from t_user where id=?

  Hibernate: delete from t_user where id=?

  删除了User,并没有对中间表发生影响

  3.在程序中执行删除Game

  Hibernate:delete from t_game_user where game_id=?

  Hibernate:delete from t_game_user where game_id=?

  Hibernate:delete from t_game_user where game_id=?

  Hibernate:delete from t_game_user where game_id=?

  Hibernate:delete from t_game where game_id=?

  Hibernate:delete from t_game where game_id=?

  Hibernate:delete from t_game where game_id=?

  Hibernate:delete from t_game where game_id=?

  对中间表产生了影响,说明是Game在维护他们之间的关联关系

  三。下面这里是一对多的维护关联关系,(同样是在部设置cascade的前提下)一对多的关联关系其实更简单,因为他们之间没有中间 表,User和Group,他们的关联关系就是体现在one方(group)的主键是Many方(User)的外键,这个关联关系就在User的表中。因 为有外键的存在,group在user删除之前,是不能够删除的,所以他们之间维护关联关系的任务就只能交给Many方(User)

转载于:https://www.cnblogs.com/gtaxmjld/p/4443696.html

Hibernate之mappedBy相关推荐

  1. org.hibernate.AnnotationException: mappedBy reference an unknown target entity property

    org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: xxxxxxx 原因是 ...

  2. hibernate中mappedby的理解

    mappedBy的意思就是"被映射",即mappedBy这方不用管关联关系,关联关系交给另一方处理 1.规律:凡是双向关联,mapped必设,因为根本都没必要在2个表中都存在一个外 ...

  3. hibernate 配置@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY) 主导方问题删除问题。

    hibernate 配置@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)  ?? 多对一的关系 ,关系有一个主导方.主导方应该是one的 ...

  4. mappedBy reference an unknown target entity property 错误 @ManyToMany(mappedBy @OneToMany(mappedBy

    mappedBy reference an unknown target entity property 错误 @ManyToMany(mappedBy = @OneToMany (mappedBy ...

  5. linux查看命令类型,查看linux命令类型

    LINUX 虚拟机克隆与网络配置 虚拟机克隆后,启动之后发现网卡没有启动.发现提示错误信息"Device eth0 does not seem to be present, delaying ...

  6. springboot笔记整理

    在搭建简单的demo程序时 出现如上报错问题,  经查询得出    关于idea 中使用mybastis报出 Invalid bound statement (not found)的错误解决方案  m ...

  7. 码农小汪-Hibernate学习8-hibernate关联关系注解表示@OneToMany mappedBy @ManyToMany @JoinTable...

    近期我也是有点郁闷,究竟是程序中处理关联关系.还是直接使用外键处理关联关系呢?这个的说法不一致!程序中处理这样的关联关系的话.自己去维护这样的约束.这样的非常乐观的一种做法!或者是直接在数据库中处理这 ...

  8. Hibernate中,mappedBy和注解@JoinColumn的对比

    mappedBy 我们知道,mappedBy用于指定具有双向关系的两个实体中.哪个实体是被关联处理的.它有如下四个特点: 1.只有OneToOne,OneToMany,ManyToMany上才有map ...

  9. hibernate - mappedby的理解

    mappedBy的意思就是"被映射",即mappedBy这方不用管关联关系,关联关系交给另一方处理 1.规律:凡是双向关联,mapped必设,因为根本都没必要在2个表中都存在一个外 ...

最新文章

  1. TCP协议连接的11种状态浅谈
  2. 从零写一个编译器(六):语法分析之表驱动语法分析
  3. mysql_sed_使用sed提取mysql备份的一行部分
  4. Axure快速原型教程02--创建页面和设置界面
  5. android动画框架,GitHub - azhengyongqin/CustomAnimationFramework: Android自定义曲线路径动画框架...
  6. Java并发程序设计(二)Java并行程序基础
  7. 没有信号无服务器,没有信号不用怕“音离”你身边的便携式基站
  8. tornado之获取参数
  9. element ui表单处理的简洁方法
  10. ghost还原固态硬盘_解决方法:SSD可以使用Ghost软件吗?最后说清楚了
  11. HTTP代理,正向反向,代理的作用
  12. DeBUG|实例化servlet类xxxx异常
  13. ShowWindow函数用法。
  14. commit翻译中文_commit的意思在线翻译,解释commit中文英文含义,短语词组,音标读音,例句,词源,同义词【澳典网ODict.Net】...
  15. 拼多多新店铺上架多少宝贝合适?是越多越好吗?
  16. 多元统计分析笔记二——多元分布
  17. uniapp 播放视频
  18. 在程序中写一个“HelloJavaWorld你好世界“输出到操作系统文件Hello.txt文件中
  19. 井字棋小游戏代码(Visual Studio)
  20. 惠州周边适合公司团建的农家乐

热门文章

  1. Theme、StylesheetTheme设置ASP.NET的样式与主题
  2. 通过文件读写方式实现Matlab和Modelsim的联合仿真
  3. FPGA中时钟相关概念
  4. 键盘输入_键盘输入技巧
  5. 做Java头发少_这35个Java代码优化细节,你用了吗
  6. 微软IE8浏览器个性化设置技巧
  7. 强行分类提取特征自编码网络例2
  8. AutoML的相关链接大全
  9. selenium+python headless 爬虫环境配置
  10. 【总结整理】数据可视化