多对多单向,多对多双向

这篇博客详细介绍了在Java Hibernate框架下如何设置多对多单向和双向关系映射。在多对多单向关系中,只在Teacher类中定义了@ManyToMany注解,并通过@JoinTable配置中间表。而在多对多双向关系中,Teacher类和Student类都定义了@ManyToMany,同时Student类使用(mappedBy)指定关联的属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多对多单向

Teacher类中

@ManyToMany
@JoinTable(name="student_teacher",//中间表名
joinColumns=@JoinColumn(name="teacher_id"),//这个类在表中的id
inverseJoinColumns=@JoinColumn(name="student_id")//反转的类在联合表中的id

)
public Set<Student> getStudentSet() {
return studentSet;
}


生成的sql

Hibernate: 
    create table Student (
        id integer not null auto_increment,
        name varchar(255),
        score integer not null,
        primary key (id)
    ) ENGINE=InnoDB
Hibernate: 
    create table student_teacher (
        teacher_id integer not null,
        student_id integer not null,
        primary key (teacher_id, student_id)
    ) ENGINE=InnoDB
Hibernate: 
    create table Teacher (
        id integer not null auto_increment,
        name varchar(255),
        primary key (id)
    ) ENGINE=InnoDB
Hibernate: 
    alter table student_teacher 
        add constraint FK1iasve8qh9avntdgaxoiguu0u 
        foreign key (student_id) 
        references Student (id)
Hibernate: 
    alter table student_teacher 
        add constraint FKarpd7go6oi75bga0d1soi9rsq 
        foreign key (teacher_id) 
        references Teacher (id)

多对多双向

Teacher类

@ManyToMany
@JoinTable(name="student_teacher",
joinColumns=@JoinColumn(name="teacher_id"),//这个类在表中的id
inverseJoinColumns=@JoinColumn(name="student_id")//反转的类在联合表中的id

)
public Set<Student> getStudentSet() {
return studentSet;
}

Student类

@ManyToMany(mappedBy="studentSet")
public Set<Teacher> getSet() {
return set;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值