知识大全 Hibernate多对多双向关联(xml配置)

Posted

篇首语:大直若屈,大巧若拙,大辩若讷。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Hibernate多对多双向关联(xml配置)相关的知识,希望对你有一定的参考价值。

Hibernate多对多双向关联(xml配置)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  

  

  Role java

  package many many bean;

  import java util Set;

  public class Role

  private int id;

  private String name;

  private Set<User> users;

  public int getId()

  return id;

  

  public void setId(int id)

  this id = id;

  

  public String getName()

  return name;

  

  public void setName(String name)

  this name = name;

  

  public Set<User> getUsers()

  return users;

  

  public void setUsers(Set<User> users)

  this users = users;

  

  

  User java

  package many many bean;

  import java util Set;

  public class User

  private int id;

  private String name;

  private Set<Role> roles;

  public int getId()

  return id;

  

  public void setId(int id)

  this id = id;

  

  public String getName()

  return name;

  

  public void setName(String name)

  this name = name;

  

  public Set<Role> getRoles()

  return roles;

  

  public void setRoles(Set<Role> roles)

  this roles = roles;

  

  

  映射文件

  Role hbm xml

  <?xml version= encoding= UTF ?>

  <!DOCTYPE hibernate mapping PUBLIC

   //Hibernate/Hibernate Mapping DTD //EN

  hiber/hibernate mapping dtd >

  <hibernate mapping package= many many bean >

  <class name= Role table= roles catalog= Hibernate_Many Many >

  <id name= id column= id >

  <generator class= native />

  </id>

  <property name= name column= name />

  <set name= users table= user_role cascade= all >

  <key>

  <column name= role_id />

  </key>

  <many to many column= user_id class= User />

  </set>

  </class>

  </hibernate mapping>

  User hbm xml

  <?xml version= encoding= UTF ?>

  <!DOCTYPE hibernate mapping PUBLIC

   //Hibernate/Hibernate Mapping DTD //EN

   hiber/hibernate mapping dtd >

  <hibernate mapping package= many many bean >

  <class name= User table= users catalog= Hibernate_Many Many >

  <id name= id column= id >

  <generator class= native />

  </id>

  <property name= name column= name />

  <set name= roles table= user_role cascade= all >

  <key>

  <column name= user_id />

  </key>

  <many to many column= role_id class= Role />

  </set>

  </class>

  </hibernate mapping>

  导出的sql

  create table Hibernate_Many Many roles (

  id integer not null auto_increment

  name varchar( )

  primary key (id)

  )

  create table Hibernate_Many Many users (

  id integer not null auto_increment

  name varchar( )

  primary key (id)

  )

  create table user_role (

  role_id integer not null

  user_id integer not null

  primary key (user_id role_id)

  )

  alter table user_role

  add index FK BF ADA B F (role_id)

  add constraint FK BF ADA B F

  foreign key (role_id)

  references Hibernate_Many Many roles (id)

  alter table user_role

  add index FK BF A F FD F (user_id)

  add constraint FK BF A F FD F

  foreign key (user_id)

  references Hibernate_Many Many users (id)

  测试代码

  @Test

  public void insert()

  Session session=HibernateSessionFactory getSession();

  Transaction transaction=session beginTransaction();

  try

  transaction begin();

  User user=new User();

  user setName( 张三 );

  Role role=new Role();

  role setName( 管理员 );

  Set<Role> roles=new HashSet<Role>();

  roles add(role);

  user setRoles(roles);

  session persist(user);

  mit();

   catch (HibernateException e)

  e printStackTrace();

  transaction rollback();

  

  

  @Test

  public void select()

  Session session=HibernateSessionFactory getSession();

  User user=(User) session get(User class );

  System out println(user getName());

  Set<Role> roles=user getRoles();

  for (Iterator<Role> iterator = erator(); iterator hasNext();)

  Role role = (Role) iterator next();

  System out println(role getName());

  

cha138/Article/program/Java/ky/201311/28194

相关参考