本来多对多(用户角色)会产生第3个中间表(用户角色表),现在把中间表单独抽象出一个类来,然后用它分别和用户表多对一,角色表多对一。
用户表类:
package com.bjpowernode.hibernate.domain; public class User { private int id; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
角色表类:
package com.bjpowernode.hibernate.domain; public class Role { private int id; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
角色用户类:
package com.bjpowernode.hibernate.domain; public class UserRole { private int id; private User user; private Role role; public int getId() { return id; } public void setId(int id) { this.id = id; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public Role getRole() { return role; } public void setRole(Role role) { this.role = role; } }
用户.xml:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.bjpowernode.hibernate.domain.User" table="t_user"> <id name="id"> <generator class="native"/> </id> <property name="name"/> </class> </hibernate-mapping>
角色.xml:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.bjpowernode.hibernate.domain.Role" table="t_role"> <id name="id"> <generator class="native"/> </id> <property name="name"/> </class> </hibernate-mapping>
角色用户.xml:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.bjpowernode.hibernate.domain.UserRole" table="t_user_role"> <id name="id"> <generator class="native"/> </id> <many-to-one name="user" column="userId"/> <many-to-one name="role" column="roleId"/> </class> </hibernate-mapping>
单元测试:
public void testSave2(){ Session session = null; try { session = HibernateUtils.createSession(); session.beginTransaction(); Role role1=new Role(); role1.setName("数据录入人员"); session.save(role1); Role role2=new Role(); role2.setName("商务经理"); session.save(role2); Role role3=new Role(); role3.setName("商务主管"); session.save(role3); Role role4=new Role(); role4.setName("会计"); session.save(role4); //role到此结束 User user1=new User(); user1.setName("张三"); session.save(user1); User user2=new User(); user2.setName("李四"); session.save(user2); User user3=new User(); user3.setName("王五"); session.save(user3); //user到此结束 //张三,数据录入人员 UserRole ur1=new UserRole(); ur1.setRole(role1); ur1.setUser(user1); session.save(ur1); //张三,商务主管 UserRole ur2=new UserRole(); ur2.setRole(role2); ur2.setUser(user1); session.save(ur2); //张三,商务经理 UserRole ur3=new UserRole(); ur3.setRole(role3); ur3.setUser(user1); session.save(ur3); //李四,数据录入人员 UserRole ur4_1=new UserRole(); ur4_1.setRole(role1); ur4_1.setUser(user2); session.save(ur4_1); //李四,商务主管 UserRole ur4_2=new UserRole(); ur4_2.setRole(role2); ur4_2.setUser(user2); session.save(ur4_2); //王五,商务经理 UserRole ur5_1=new UserRole(); ur5_1.setRole(role3); ur5_1.setUser(user3); session.save(ur5_1); //王五,商务会计 UserRole ur5_2=new UserRole(); ur5_2.setRole(role4); ur5_2.setUser(user3); session.save(ur5_2); session.getTransaction().commit(); } catch (Exception ex) { ex.printStackTrace(); session.getTransaction().rollback(); } finally { HibernateUtils.closeSession(session); }
refurl:
http://blog.csdn.net/yixiu285/article/details/7749109
http://www.cnblogs.com/syxchina/archive/2012/04/09/2439280.html
相关推荐
在处理大数据时,一个大型CSV文件可能会变得难以管理,这时就需要将它拆分成多个小文件。本教程将详细解释如何通过特定工具或编程方式实现CSV表格的拆分。 ### CSV文件的特点 1. **易读性**:由于CSV是纯文本格式,...
该宏的主要功能是根据指定列(在本例中为第二列)中的值,将一个大的Excel工作簿拆分成多个独立的工作表。每个独立的工作表将包含与第二列某个特定值相关的所有行。 #### 宏代码解析 1. **初始化变量**: - `Arr`...
在编程和计算机科学中,"一个字拆分成高低字节"是处理二进制数据时常见的操作,尤其是在处理低级编程、嵌入式系统或特定的微控制器如西门子1200系列时。这个过程涉及到将一个字(通常为16位或32位的数据单元)分解为...
1、小工具要与Excel文件放在同一个文件夹下; 2、标题行唯一,不能跨行; 3、以某列为的数据为标准值进行拆分,该列不能有合并单元格,可以自己选择需要拆分的列; 4、拆分完成后会按拆分列,分组生成对应的Excel...
这个名为“手机号码拆分成多个excel文件”的项目就是一种高效的数据管理策略,特别适用于批量发送短信推广的情况。以下是对这个主题的详细解释: 首先,我们需要理解核心概念——手机号码。手机号码是个人或企业的...
- 数据预处理:在数据分析和机器学习中,可能需要对数据进行预处理,将数据集拆分成多个子集,这种操作类似于本问题的解决方案。 - 并行计算:在分布式或并行计算环境中,将任务拆分到不同子集有助于提高效率。 ...
标题“每隔5行拆分成多个表格”以及描述“运行VBA,根据弹窗输入行数,每隔N行拆分,将N行的数据拆分成多个sheet”揭示了这一自动化技术的核心。 首先,理解VBA是Excel内置的一种编程语言,允许用户自定义功能、...
里边是2个excel文档,带vba; 一个是拆50模板,用于把excel拆成固定行数的模板; 一个是拆地区模板,用于把一个excel按地区拆成多个excle;当然这个地区可以变成客户,变成学校,变成任何。
标题“将一个EXCEL文档,按指定字段,拆分成多个EXCEL文件,可加前、后缀,格式与母表保持一致”描述了一个实用的VBA脚本应用,它能按照用户指定的列(字段)值将一个Excel工作簿拆分成多个单独的工作簿,同时保持...
例如,若要将一个/16的网段拆成4个等大小的子网,新的掩码将是/18,因为2^(16-18)=4。 4. **计算子网地址**: 通过AND运算原始网络地址和新的子网掩码,可以得到每个子网的网络地址。 5. **确定可用主机数**: 新的...
标题“拆分成多个文件”可能指的是在编程或数据处理中将一个大文件分割成多个小文件的操作。这种操作常见于大数据处理、文件传输优化、内存限制规避等多种场景。描述中的“NULL”没有提供具体信息,但我们可以从标签...
在C#编程中,将一个数字分拆成10、5、2和1的和是一项常见的计算任务,常用于处理货币值或者进行特定算法的优化。这个过程涉及到整数除法和取余运算,以及循环控制结构。接下来,我们将详细讨论如何实现这个功能。 ...
在Excel中,工作簿是一个包含了多个相互独立的工作表的文件,每个工作表则是一个二维的数据表格,可以看作是工作簿中的一个独立单元。在处理复杂的大型数据集时,通常会创建多个工作表以组织和分类不同的数据。 ...
我们的目标是将这些工作表单独拆分开成一个个工作簿。 知识点2:查看代码 右键点击一个工作表标签,在弹出的下拉列表中挑选“查看代码”,即弹出代码窗口。在这个窗口中,我们可以编写代码来实现工作表的拆分。 ...
该函数的目的是将`$input_array`分割成多个长度为`$length`的子数组,如果最后一个子数组不足`$length`,则保留剩余元素。 以下是一个可能的函数实现: ```php function array_split_fixed_length($input_array, $...
在进行数据分析时,我们经常需要把DataFrame的一列拆成多列或者根据某列把一行拆成多行,这篇文章主要讲解这两个目标的实现。 1.读取数据 2.将City列转成多列(以‘|’为分隔符) 这里使用匿名函数lambda来讲City...
标题中的“把一个数分解成2的次幂”是指将一个整数表示为二进制下的各个位上2的幂的和。这是一个基础的数学概念,尤其在计算机科学中至关重要,因为计算机内部处理数据的方式是基于二进制的。在二进制系统中,每个...
当遇到大容量的文本文件时,为了便于管理和处理,我们可能会需要将这些大文件拆分成多个小文件。这个过程被称为文本文件的按行拆分。本篇将详细介绍这一操作及其相关知识点。 一、文本文件的结构 文本文件是由一...
在 Word 中,将一个文档分页拆分成多个文档是非常有用的技巧,特别是在需要对文档进行分页处理或将文档发送给他人时。本文将介绍如何使用 VBA 编辑器来实现将一个 Word 文档按页分割成多个 Word 文档。 Step 1: ...
在数据处理工作中,有时我们需要将一个大型的Excel(xlsx)文件拆分成多个小文件,以便于管理和分析。这个"xlsx文件按列筛选拆分成多个文件工具"正是为了解决这个问题而设计的。本文将深入探讨该工具的功能、原理...