当前位置: 首页 > news >正文

角色和权限Hibernate实体映射配置

角色实体

package cn.itcast.oa.domain;

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

/**
 * 岗位
 * 
 * @author tyg
 * 
 */
public class Role {
    private Long id;
    private String name;
    private String description;
    private Set<User> users = new HashSet<User>();
    private Set<Privilege> privileges = new HashSet<Privilege>();

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Set<User> getUsers() {
        return users;
    }

    public void setUsers(Set<User> users) {
        this.users = users;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Set<Privilege> getPrivileges() {
        return privileges;
    }

    public void setPrivileges(Set<Privilege> privileges) {
        this.privileges = privileges;
    }

}


权限实体

package cn.itcast.oa.domain;

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

/**
 * 权限
 * 
 * @author tyg
 * 
 */
public class Privilege {
    private Long id;
    private String url;
    private String name; // 权限名称
    private Set<Role> roles = new HashSet<Role>();
    private Privilege parent; // 上级权限
    private Set<Privilege> children = new HashSet<Privilege>(); // 下级权限

    public Privilege() {
    }

    public Privilege(String name, String url, Privilege parent) {
        this.name = name;
        this.url = url;
        this.parent = parent;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

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

    public Privilege getParent() {
        return parent;
    }

    public void setParent(Privilege parent) {
        this.parent = parent;
    }

    public Set<Privilege> getChildren() {
        return children;
    }

    public void setChildren(Set<Privilege> children) {
        this.children = children;
    }

}


两者映射

<?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 package="cn.itcast.oa.domain">

    <class name="Role" table="itcast_role">
        <id name="id">
            <generator class="native"/>
        </id>
        <property name="name" />
        <property name="description" />
        
        
        <!-- users属性,本类与User的多对多 -->
        <set name="users" table="itcast_user_role">
            <key column="roleId"></key>
            <many-to-many class="User" column="userId"></many-to-many>
        </set>
        
        
        <!-- privileges属性,本类与Privilege的多对多 -->
        <set name="privileges" table="itcast_role_privilege" lazy="false">
            <key column="roleId"></key>
            <many-to-many class="Privilege" column="privilegeId"></many-to-many>
        </set>    
        
    </class>
    
</hibernate-mapping>
<?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 package="cn.itcast.oa.domain">

    <class name="Privilege" table="itcast_privilege">
        <id name="id">
            <generator class="native"/>
        </id>
        <property name="url" />
        <property name="name" />
        
        
        <!-- roles属性,本类与Role的多对多-->
        <set name="roles" table="itcast_role_privilege">
            <key column="privilegeId"></key>
            <many-to-many class="Role" column="roleId"></many-to-many>
        </set>


        <!-- parent属性,本类与Privilege(上级)的多对一-->
        <many-to-one name="parent" class="Privilege" column="parentId"></many-to-one>


        <!-- children属性,本类与Privilege(下级)的一对多-->
        <set name="children" lazy="false">
            <key column="parentId"></key>
            <one-to-many class="Privilege"/>
        </set>

        
    </class>
    
</hibernate-mapping>


Hibernate实体映射总结

<!-- users属性,本类与User的一对多 -->
格式:?属性,本类与?的?
?1    属性名
?2    关联对类型
?3    关系

    多对一:
        <many-to-one name="" class="" column=""></many-to-one>
    一对多(Set):
        <set name="">
            <key column=""></key>
            <one-to-many class=""/>
        </set>
    多对多(Set):
        <set name="" table="">
            <key column=""></key>
            <many-to-many class="" column=""></many-to-many>
        </set>

本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1743577

相关文章:

  • C言语指向数组元素的指针
  • 常见问题解决
  • T-SQL 之 自定义函数
  • Comparable和Comparator排序接口
  • 驰骋工作流引擎表单设计控件-关系类控件-明细表(3)
  • 第一篇、C_高精度加法
  • 【域控管理】父域的搭建
  • dos.orm
  • MYSQL 的 IF 函数
  • 深入了解php opcode缓存原理
  • 自媒体平台如何提高推荐量
  • iptables详解
  • Entityframework core 动态添加模型实体
  • JDK 有区分 JAVA SE 和 JAVA EE版本的吗
  • attention 机制
  • ----------
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【技术性】Search知识
  • axios 和 cookie 的那些事
  • flask接收请求并推入栈
  • HTML-表单
  • iOS小技巧之UIImagePickerController实现头像选择
  • JavaScript DOM 10 - 滚动
  • JavaScript设计模式系列一:工厂模式
  • Netty源码解析1-Buffer
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Vue.js源码(2):初探List Rendering
  • Web标准制定过程
  • 推荐一个React的管理后台框架
  • ionic异常记录
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #Spring-boot高级
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (1)(1.13) SiK无线电高级配置(六)
  • (33)STM32——485实验笔记
  • (C++17) std算法之执行策略 execution
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (七)Java对象在Hibernate持久化层的状态
  • (十六)串口UART
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)ObjectiveC 深浅拷贝学习
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET Core 版本不支持的问题
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET/C# 使用反射注册事件
  • .net经典笔试题
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递