• 08-hibernate注解-多对多双向外键关联


    多对多双向外键

    双方持有对方的集合对象

    其中一方设置:

    //教师类

    @ManyToMany(mappedBy="teachers")   //mappedby表示教师交给学生来控制

    另一方:

    //学生类

    @ManyToMany
        @JoinTable(                                
                name="teachars_students",                    //中间表的名字
                joinColumns= {@JoinColumn(name="sid")},        //外键的字段
                inverseJoinColumns= {@JoinColumn(name="tid")})    //反转控制字段的名字

    相对于刚刚的多对多单向外键,多对多双向外键,只需要在教师类修改就行了。

    教师类:

    因为多对多,所以教师类中也需要有学生类的集合。

    然后把教师交给学生来控制,由学生做主控方。

    package mtm_bfk;
    
    import java.util.Set;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.ManyToMany;
    
    import org.hibernate.annotations.GenericGenerator;
    
    //教室实体类
    @Entity
    public class Teachers {
    
        @Id
        @GeneratedValue(generator="tid")
        @GenericGenerator(name="tid",strategy="assigned")
        @Column(length=4)
        private String tid;//教师的编号
        private String tname;//姓名
        
        @ManyToMany(mappedBy="teachers")//把教师交给学生控制
        private Set<Students> stus;//教师持有学生的集合

    public Teachers() { } public Teachers(String tid, String tname) { //super(); this.tid = tid; this.tname = tname; } public Set<Students> getStus() { return stus; } public void setStus(Set<Students> stus) { this.stus = stus; } public String getTid() { return tid; } public void setTid(String tid) { this.tid = tid; } public String getTname() { return tname; } public void setTname(String tname) { this.tname = tname; } }

    测试结果差不多。

  • 相关阅读:
    http协议
    db2 将逗号分隔数据转换为多值IN列表
    jquery deferred
    ps -ef|grep htpd|wd -l
    mysql 触发器
    css 五角星 (转)
    java 问题
    浏览器假死
    js math atan2
    CSS伪类选择器
  • 原文地址:https://www.cnblogs.com/alsf/p/7829626.html
Copyright © 2020-2023  润新知