hibernate manytomany 单向

单向 user对应多个role
在user这一对设置set集合
set里面 创一个关系表 关系表中创一个外键 userid 指向user
加一个列roleid指向 role

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
 <class name="hibernate.belle.User"  table="t_user"> 
          <id name="id" >
              <generator class="native"></generator>
          </id>
          <property name="name"  column="username"/>

         <set name="roles"  table="t_user_role">
              <key  column="userid"   >  </key>
              <many-to-many    class="hibernate.belle.Role"  column="role_id" ></many-to-many>           

         </set>

</class>
</hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
 <class name="hibernate.belle.User"  table="t_user"> 
          <id name="id" >
              <generator class="native"></generator>
          </id>
          <property name="name"  column="username"/>

         <set name="roles"  table="t_user_role">
              <key  column="userid"   >  </key>
              <many-to-many    class="hibernate.belle.Role"  column="role_id" ></many-to-many>           

         </set>

</class>
</hibernate-mapping>
package hibernate.belle;


public class Role {
    private int id;
    private String name;



    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;
    }


}

package hibernate.belle;

import java.util.Set;

public class User {
private int id;
private String name;
private Set 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 getRoles() {
    return roles;
}

public void setRoles(Set roles) {
    this.roles = roles;
}

}




测试存储和load

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import org.hibernate.Session;

import hibernate.belle.HibernateUtils;
import hibernate.belle.Role;
import hibernate.belle.User;

import junit.framework.TestCase;

public class ManytoMany extends TestCase{

public void test(){
   Session session= null;
   try{
       session=HibernateUtils.getSession();
       session.beginTransaction();

       Role role1=new Role();
       Role role2=new Role();
       role1.setName("manager");
       role2.setName("skillmanager");
       session.save(role1);
       session.save(role2);
       Set u1_roleset=new HashSet();
       u1_roleset.add(role1);
       u1_roleset.add(role2);

       User user1=new User();
       User user2=new User();
       user1.setRoles(u1_roleset);
       user1.setName("Edward");
       session.save(user1);




       session.beginTransaction().commit();
   }catch(Exception e)
   {  
       session.beginTransaction().rollback();

   }finally{

       HibernateUtils.closeSession(session);

   }
}


public void testload(){
    Session session=null;
    try{
        session=HibernateUtils.getSession();
        session.beginTransaction();
        Set roles=new HashSet();
        User user1=(User)session.load(User.class, 3);
        roles=user1.getRoles();
        for(Iterator iter=roles.iterator();iter.hasNext();)
        {
            Role role=(Role)iter.next();
            System.out.println(role.getName());
        }
        session.beginTransaction().commit();
    }catch(Exception e)
    {
        session.beginTransaction().rollback();

    }finally{

        HibernateUtils.closeSession(session);

    }


}

}

“`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值