首页 > 其他分享 >Hibernate多对多双向关联(xml配置)

Hibernate多对多双向关联(xml配置)

时间:2023-05-08 12:31:44浏览次数:43  
标签:xml Hibernate name public Role user 双向 role id




Hibernate多对多双向关联(xml配置)_hibernate


Role.java 
package  com.many2many.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  com.many2many.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="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  package ="com.many2many.bean" > 
         < class  name ="Role"  table ="roles"  catalog ="Hibernate_Many2Many" > 
             < 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="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  package ="com.many2many.bean" > 
         < class  name ="User"  table ="users"  catalog ="Hibernate_Many2Many" > 
             < 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_Many2Many.roles (
        id  integer   not   null  auto_increment,
        name  varchar ( 255 ),
         primary   key  (id)
    )

     create   table  Hibernate_Many2Many.users (
        id  integer   not   null  auto_increment,
        name  varchar ( 255 ),
         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  FK143BF46ADA6B394F (role_id), 
         add   constraint  FK143BF46ADA6B394F 
         foreign   key  (role_id) 
         references  Hibernate_Many2Many.roles (id)

     alter   table  user_role 
         add   index  FK143BF46A7F95FD2F ( user_id ), 
         add   constraint  FK143BF46A7F95FD2F 
         foreign   key  ( user_id ) 
         references  Hibernate_Many2Many.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);
            
            transaction.commit();
        }  catch  (HibernateException e) {
            e.printStackTrace();
            transaction.rollback();
        }
    }
    
    
    @Test
     public   void  select(){
        Session session = HibernateSessionFactory.getSession();
        User user = (User) session.get(User. class ,  1 );
        System.out.println(user.getName());
        Set < Role >  roles = user.getRoles();
         for  (Iterator < Role >  iterator  =  roles.iterator(); iterator.hasNext();) {
            Role role  =  (Role) iterator.next();
            System.out.println(role.getName());
        }
    }

标签:xml,Hibernate,name,public,Role,user,双向,role,id
From: https://blog.51cto.com/u_16065168/6253468

相关文章

  • java.io.FileNotFoundException: class path resource [bean.xml] cannot be opened b
    出现这个报错Exceptioninthread"main"org.springframework.beans.factory.BeanDefinitionStoreException:IOExceptionparsingXMLdocumentfromclasspathresource[bean.xml];nestedexceptionisjava.io.FileNotFoundException:classpathresource[bean.......
  • 双向LLC变换器模型,采用半桥结构,电路拓扑为LLC结构,注意不是CLLC!!!
    双向LLC变换器模型,采用半桥结构,电路拓扑为LLC结构,注意不是CLLC!!!输出电压闭环控制,闭环控制采用变频控制正反向运行效果如图所示对称半桥结构和不对称半桥结构都有联系请做备注模型运行环境包括matlab/simulink/plecs/等~ID:7440676714497107......
  • 非隔离双向DC/DC变换器 buck-boost变换器仿真
    非隔离双向DC/DC变换器buck-boost变换器仿真输入侧为直流电压源,输出侧接蓄电池模型采用电压外环电流内环的双闭环控制方式正向运行时电压源给电池恒流恒压充电,反向运行时电池放电维持直流侧电压稳定matlab/simulink仿真模型~ID:1639675030822110......
  • Hibernate4之二级缓存配置
    缓存:缓存是什么,解决什么问题? 位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为缓存Cache。缓存目的:让数据更接近于应用程序,协调速度不匹配,使访问速度更快。 缓存的范围分为3类: 1.事务范围(单Session即一级缓存)   事务范围......
  • Python wordpress-xmlrpc错误:xml.parsers.expat.ExpatError: XML or text declaration
    解决方法:修改打开client.py文件原代码:deffeed(self,data):self._parser.Parse(data,0)改成如下的代码:deffeed(self,data):self._parser.Parse(data.strip(),0)......
  • 微信小程序在wxml里不支持includes,indexOf,findIndex等方法
    小程序的wxml文件内不支持数组的includes,indexOf,findIndex等方法。不是垃圾是什么?玩什么标新立异?不会搞就别TM搞。 开发者:我想上二楼。WX:这里有一坨屎,吃子它,就让你上二楼。开发者:@#$%&@^$*^&*&^$%$^ 咋做?在任意目录创建一个.wxs文件,里面写上如下代码:文件-/utils/wuti......
  • python3 xml.etree.ElementTree.ElementTree
    1、介绍对应整个xml结构。2、初始化classElementTree:def__init__(self,element=None,file=None):self._root=element#firstnodeiffile:self.parse(file)element,ElementTree.Element类型,即设置一个节点对象作为根节点file,str......
  • python3 xml etree使用
    1、创建xml(1)通过ElementTree.ElementTree类创建,并设置一个ElementTree.Element对象作为参数,该参数对象作为根节点(2)通过ElementTree.Element创建一个或多个节点,为这些节点设置tag、attrib、text和tail(3)这些节点通过父节点的append方法添加,管理关系。ElementTree.ElementTr......
  • python3 xml tree
    Python3XML解析|菜鸟教程(runoob.com)Python标准库之xml.etree-Awakenedy-博客园(cnblogs.com)1、介绍通过python3自带的xml.etree.ElementTree模块可以实现对xml的操作。XML是一种固有的分层数据格式,也是用一棵树来表示它。为此,本模块分为两个类:ElementTree将......
  • spring和hibernate配置文件整合
    为了操作方便,我们经常在spring整合hibernate的WEB项目中省去了用hibernate.cfg.xml的麻烦,将hibernate的信息直接配置在Spring配置文件中下面的都是针对Spring整合Hibernate(注解方式的hibernate)来说的hibernate.cfg.xml和applicationContext.xml原始配置......