角色和权限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

时间: 2024-09-17 04:18:43

角色和权限Hibernate实体映射配置的相关文章

Java IDE 编辑器 --- IntelliJ IDEA 进阶篇 生成 hibernate 实体与映射文件

原文:转:Java IDE 编辑器 --- IntelliJ IDEA 进阶篇 生成 hibernate 实体与映射文件 2011-04-30 12:50         很多人不知道怎么用 IntelliJ IDEA 编辑器生成 Hibernate 实体映射文件,很多人认为 IDEA 不支持此功能,或者需要安装特定的插件才能完成该操作.实际上 IDEA 支持该功能也无需安装IntelliJ IDEA插件.          以下为 IntelliJ IDEA 编辑器生成 Hibernate 实

Acegi + Spring + Hibernate + Struts 2搭建基于角色的权限控制

安全永远是WEB应用系统必须面对的头等大事, 也是最头疼的事, 其实安全系统就只包括两个问题: 认证和授权. 以前做些网站系统, 安全检测逻辑都在放在须要安全控制的代码前面, 这样做有很多不好的地方, 重复多次的编码就不用说了, 代码移植性, 重用性都得不到体现, 安全检测逻辑要永远和业务逻辑放在一起. 那么, 能不能够在进入方法前就调用一些安全检测? 其实Spring AOP就是这个思想, 那么又如何实现安全检测呢? Spring Acegi Security 框架就是做这个事情. 本文主要是

hibernate5(5)实体映射注解配置[2]主键生成策略

@GeneratedValue基本注解类型 在上一篇文章中,我们讲到了JPA使用@GeneratedValue注解来定义生成策略,而关于注解生成策略有4种基本支持类型: 1. GenerationType.TABLES 当前主键的值单独保存到一个数据库的表中 2. GenerationType.SEQUENCE 利用底层数据库提供的序列生成标识符 3. GenerationType.IDENTITY 采取数据库的自增策略 4. GenerationType.AUTO 根据不同数据库自动选择合适的

Hibernate实体关系映射—Annotation

hibernate实体关系映射分为:     单边一对一,双边一对一:     单边一对多,单边多对一:     双边一对多,双边多对一:     单边多对多,双边多对多:     以及主键相同的单双边一对一.下面分别总结这几种关系映射的注解方法: 1.  单边一对一和双边一对一     单边一对一:比如一个学生(Student)有一个学生证(StudentCard),且Student类中有一个StudentCard对象: [java] view plain copy   @Entity    

spring3 + hibernate 4.1 配置的问题

问题描述 项目用:spring MVC + spring 3.2.4 + Hibernate 4.2.6+spring security3.1.4在启动容器时,spring security 通过hibernate去数据库加载权限时,报:No Session found for current thread异常.异常如下:Caused by: org.hibernate.HibernateException: No Session found for current threadat org.s

eclipse从数据库逆向生成Hibernate实体类

     做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再"自己"建立一变VO.意思是,在项目设计时,要么根据需求分析建立实体类,由正向生成数据库表:要么就先进行数据库表设计,再逆向生成实体类.没有说进行完任意一方的设计后再去花时间去自己匹配建立另一方的设计. 原因是: 1. 1.5倍工作量,浪费时间.(时间对公司来说很重要) 2. 无法保证两边映射一致.因为两边都是自己设计的,那么

自己动手写ASP.NET ORM框架(三):关系映射配置—Table属性

在上一篇随笔中已经完成了ADO.NET操作数据库的封装,并已经支持多数据库,只需要在 配置文件中指定数据库类型即可,本节主要完成对象与数据库表的关系映射配置. 下面看表名的映射配置代码块1-1: [Table(Name="Student")] public class StudentEntity { //...........省略 } 在类上面用[Table(name = "Student")]属性来配置,表示该实体类StudentEntity与数 据库中的Stud

ASP.NET.4.5.1+MVC5.0设置系统角色与权限

这篇文章主要介绍了ASP.NET.4.5.1+MVC5.0设置系统角色与权限的部分内容,后续我们将继续讨论这个话题,希望小伙伴们喜欢.     数据结构 权限分配 1.在项目中新建文件夹Helpers 2.在HR.Helpers文件夹下添加EnumMoudle.Cs  代码如下: namespace HR.Helpers { public enum EnumMoudle { /// <summary> /// 模块 /// </summary> [EnumTitle("用

hibernate-Oracle数据库中新增一个字段,Hibernate中映射怎样加?

问题描述 Oracle数据库中新增一个字段,Hibernate中映射怎样加? 问题:我在oracle数据库中新增一个字段,那么在Hibernate映射中,需要手动加进去吗?在中. 谢谢!! 解决方案 类似这样,第一个name对应实体中,第二个name对应数据库 解决方案二: