以前做过使用JPA注解实现多对多映射的示例,在这里使用配置文件再做个小示例。仍然以角色(Role)和权限(Privilege)为例演示:
Role.java
Privilege.java
Role.hbm.xml
Privilege.hbm.xml
hibernate.cfg.xml
测试代码:
Hibernate生成结果:
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: insert into t_privilege (name, id) values (?, ?)
Hibernate: insert into t_privilege (name, id) values (?, ?)
Hibernate: insert into t_role (name, id) values (?, ?)
Hibernate: insert into t_role (name, id) values (?, ?)
Hibernate: insert into t_role_privilege (role_id, privilege_id) values (?, ?)
Hibernate: insert into t_role_privilege (role_id, privilege_id) values (?, ?)
Hibernate: insert into t_role_privilege (role_id, privilege_id) values (?, ?)
SQL> select * from t_role;
ID NAME
---------- ----------
330 Role1
331 Role2
SQL> select * from t_privilege;
ID NAME
---------- ----------
328 Privilege1
329 Privilege2
SQL> select * from t_role_privilege;
ROLE_ID PRIVILEGE_ID
---------- ------------
330 328
330 329
331 328
注意:Role.hbm.xml中通过inverse="false"来设置关联关系由role维护,Role和Privilege只能有一个将inverse字段设置成false。