hibernate 映射-多对多双向
@ManyToMany(mappedBy = "exams")public List<User> getUsers() { return users; }
?
创建的中间表的名称是t_user_exam,其中user_id是参考考生id的外键;exam_id是参考考试id的外键。
sql语句:
15:24:37,390 DEBUG org.hibernate.tool.hbm2ddl.SchemaExport:377 -?
? ? create table t_user_exam (
? ? ? ? user_id integer not null,
? ? ? ? exam_id integer not null
? ? )
15:24:37,453 DEBUG org.hibernate.tool.hbm2ddl.SchemaExport:377 -?
? ? alter table t_user_exam?
? ? ? ? add index FK331826084DE43CAB (exam_id),?
? ? ? ? add constraint FK331826084DE43CAB?
? ? ? ? foreign key (exam_id)?
? ? ? ? references Exam (id)
15:24:37,609 DEBUG org.hibernate.tool.hbm2ddl.SchemaExport:377 -?
? ? alter table t_user_exam?
? ? ? ? add index FK3318260894018D2B (user_id),?
? ? ? ? add constraint FK3318260894018D2B?
? ? ? ? foreign key (user_id)?
? ? ? ? references User (id)
?
单向与双向的区别:
(1)单向,只能从一方导航到另一方,不能反之;即只能从A导航到B,而不能从B导航到A;
双向,可以从一方导航到另一方,反之亦然;即既可以从A导航到B,也可以从B导航到A;
(2)单向,只需要配置导航始发地的类;
双向,两个类都需要配置。
?
注意:
(1)成员变量名称中最好不要有下划线;
(2)成员变量的类型中不要有ArrayList,应该用List 或Set
?
?