假設應用場景如下:teacher與student是多對多的關係,其中,teacher類對應teacher表如下:
create table `teacher` (
`id` bigint(20) not null auto_increment,
`name` varchar(50) default null,
primary key (`id`)
) engine=innodb auto_increment=3 default charset=utf8;
student類對應student表如下:
create table `student` (
`id` bigint(20) not null auto_increment,
`name` varchar(50) default null,
primary key (`id`)
) engine=innodb auto_increment=3 default charset=utf8;
中間表teacher_student表如下:
create table `teacher_student` (
`id` bigint(20) not null auto_increment,
`teacher_id` bigint(20) not null ,
`student_id` bigint(20) not null ,
primary key (`id`),
key `fk_reference_50` (`teacher_id`),
constraint `fk_reference_50` foreign key (`teacher_id`) references `teacher` (`id`),
key `fk_reference_60` (`teacher_id`),
constraint `fk_reference_60` foreign key (`student_id`) references `student` (`id`)
) engine=innodb auto_increment=3 default charset=utf8;
student類如下:
說明
1、該類經過簡化,沒有列出全部**,在此我們只關注manytomany註解及其屬性設定。
其他屬性說明參加上篇文章:如何使用jpa註解標註一對一的關係
public class teacher implements serializable ,
inversejoincolumns = )
public setgetstudents()
public void setstudents(setstudents)
} 說明:
1、@jointable
@jointable註解定義了聯接表的表名,連線列陣列,以及invers連線列陣列。invers連線列陣列是關聯表中關聯到student表主鍵的列(the 「other side」)。
預設值:
和其它許多註解一樣,在多對多關聯中很多值是自動生成,當雙向多對多關聯中沒有定義任何物理對映時,hibernate根據以下規則生成相應的值:
關聯表名:主表表名+下劃線+從表表名;
關聯到主表的外鍵名:主表名+下劃線+主表中的主鍵列名;
關聯到從表的外鍵名:主表中用於關聯的屬性名+下劃線+從表的主鍵列名。
以上規則對於雙向一對多關聯同樣一樣。
如何使用JPA註解標註多對多的關係
假設應用場景如下 teacher與student是多對多的關係,其中,teacher類對應teacher表如下 create table teacher id bigint 20 not null auto increment,name varchar 50 default null,primary...
如何使用JPA註解標註一對多的關係
假設應用場景如下 node與ipqam是一對多的關係,其中,node類對應node表如下 create table node id bigint 20 not null auto increment,name varchar 50 default null,primary key id engine...
學生老師多對多jpa
學生student,與老師teacher是多對多的關係。需要一張中間表,teacher student,裡面有兩個欄位teacherid,studentid共同組成主鍵.teacher student不用生成乙個實體類.在teacher類裡面 manytomany cascade cascadety...