old:

  @ManyToMany 注释:表示此类是多对多关系的一边,
  mappedBy 属性定义了此类为双向关系的维护端
  注意:mappedBy 属性的值为此关系的另一端的属性名。
  例如,在Student类中有如下方法:
 
  被控方:           
 
    @ManyToMany(fetch = FetchType.LAZY, mappedBy = "students")
 
    public Set<Teacher> getTeachers() {
      return teachers;
      }
那么这里的“students”就是Teachers的一个属性,通常应该是这样的:
Set<Student> students;
另一端的getStudents方法如下所示:
 
   主控方:
 
             @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
    @JoinTable(
    name = "Teacher_Student",
    joinColumns = {@JoinColumn(name = "Teacher_ID", referencedColumnName = "teacherid")},
    inverseJoinColumns = {@JoinColumn(name = "Student_ID", referencedColumnName ="studentid")}
    )
    
    public Set<Student> getStudents() {
      return students;
    }
    @ManyToMany 注释表示Teacher 是多对多关系的一端。
    @JoinTable 描述了多对多关系的数据表关系。
    name 属性指定中间表名称,
    joinColumns 定义中间表与Teacher 表的外键关系。
    上面的代码中,
    中间表Teacher_Student的Teacher_ID 列是Teacher 表的主键列对应的外键列,
    inverseJoinColumns 属性定义了中间表与另外一端(Student)的外键关系。
 
 
  可以通过上面的定义看到有三个表学生表--老师表--老师学生中间表
  以上提到主控方和被控方。。本人不赞同这种写法:
  理由是: 1.既然是多对多关系。。为什么还要分主动方和被动方?
                 2.为什么需要删除老师后才级联中间表。。。请注意:以上定义方法时,删除学生是无法级联删除中间表的。
    正确的写法应该是两边都用主控方的写法:
  只是joinColumns和inverseJoinColumns属性的地方互换就可以了
 
 
new:
 
  总结:
  
    @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
    @JoinTable(
    name = "Teacher_Student",
    joinColumns = {@JoinColumn(name = "Student_ID", referencedColumnName = "studentid")},
inverseJoinColumns = {@JoinColumn(name = "Teacher_ID", referencedColumnName ="teacherid")}
    )
 
    public Set<Teacher> getTeachers() {
      return teachers;
    }
    
 
 
    @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
    @JoinTable(
    name = "Teacher_Student",
    joinColumns = {@JoinColumn(name = "Teacher_ID", referencedColumnName = "teacherid")},
inverseJoinColumns = {@JoinColumn(name = "Student_ID", referencedColumnName ="studentid")}
    )
 
    public Set<Student> getStudents() {
      return students;
    }
 
 
2017-08-15  10:24:43

最新文章

  1. REDHAT一总复习1 禁用颜色
  2. LINUX的磁盘管理du命令详解
  3. Java Web网站应用中的单点登录
  4. android之打开网页
  5. Codevs 1078 ==Poj 1258 Agri-Net
  6. javasctipt显示几分钟前、几天前等
  7. 【转】提高PHP性能的53个技巧
  8. android启动优化
  9. Javascript经典实例 - 字符串
  10. 如何关闭tomcat的localhost_access_log?
  11. C# 的sql server like 的参数
  12. vue中一个dom元素可以绑定多个事件?
  13. Taro音频createVideoContext组件无法调用方法
  14. 【3dsmax2016】安装图文教程、破解注册以及切换语言方法
  15. win32 进程崩溃时禁止弹出错误对话框
  16. Linux之HugePages快速配置
  17. Chrome浏览器被hao123劫持,浏览器主页会被篡改为 hao123等
  18. Android 上传文件,图片。以及服务器端接收相关。
  19. python字符串格式化之format
  20. check_http检查http服务

热门文章

  1. mysql innodb存储引擎 锁 事务
  2. POJ - 2689 Prime Distance (区间筛)
  3. 【CF1181D】Irrigation
  4. VCL界面开发必备装备!DevExpress VCL v19.1.5你值得拥有
  5. django初步--+urls解析
  6. Android Studio 创建项目后“Cannot resolve symbol” 解决办法
  7. C#写入文件内容时提示:文件正被另一个人或程序使用
  8. IE大文件断点续传
  9. CF 352 D 罗宾汉发钱 模拟题+贪心
  10. Codeforces 1213F Unstable String Sort