hibernate的自关联的表示方法

来源:互联网 发布:抢红包软件 编辑:程序博客网 时间:2024/06/05 12:05

配置文件

<?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"><!--     Mapping file autogenerated by MyEclipse Persistence Tools--><hibernate-mapping package="com.marvin.shop.pojo">    <class name="Privilege" table="privilege" catalog="shop">        <id name="pid" type="java.lang.Integer">            <column name="pid" />            <generator class="native"></generator>        </id>        <property name="pname" type="java.lang.String">            <column name="pname" length="100" />        </property>        <property name="purl" type="java.lang.String">            <column name="purl" length="200" />        </property>        <property name="isleft" type="java.lang.Boolean">            <column name="isleft" />        </property>                <many-to-one name="privilege" class="Privilege" fetch="select">            <column name="parentId" />        </many-to-one>        <set name="children" inverse="true" lazy="false" fetch="subselect" order-by="pid asc">            <key>                <column name="parentId" />            </key>            <one-to-many class="Privilege" />        </set><span style="font-family: Arial, Helvetica, sans-serif;"></class></span><span style="font-family: Arial, Helvetica, sans-serif;"></hibernate-mapping></span>


下面是类的代码

package com.marvin.shop.pojo;import java.util.HashSet;import java.util.Set;/** * Privilege entity. @author MyEclipse Persistence Tools */public class Privilege implements java.io.Serializable {// Fields/** *  */private static final long serialVersionUID = -9195966077132256558L;private Integer pid;private Privilege privilege;private String pname;//功能的urlprivate String purl;//是否将功能显示在左面private Boolean isleft;//这里是自关联生成的    用于存储当前权限的父对象private Set<Privilege> children = new HashSet<Privilege>(0);//就是说 权限赋予的角色  就是这个权限 哪个角色里面有//private Set<Role> roles = new HashSet<Role>(0);// Constructors/** default constructor */public Privilege() {}public Privilege(Integer pid, Privilege privilege, String pname,String purl, Boolean isleft, Set<Privilege> children) {super();this.pid = pid;this.privilege = privilege;this.pname = pname;this.purl = purl;this.isleft = isleft;this.children = children;}public Integer getPid() {return pid;}public void setPid(Integer pid) {this.pid = pid;}public Privilege getPrivilege() {return privilege;}public void setPrivilege(Privilege privilege) {this.privilege = privilege;}public String getPname() {return pname;}public void setPname(String pname) {this.pname = pname;}public String getPurl() {return purl;}public void setPurl(String purl) {this.purl = purl;}public Boolean getIsleft() {return isleft;}public void setIsleft(Boolean isleft) {this.isleft = isleft;}public Set<Privilege> getChildren() {return children;}public void setChildren(Set<Privilege> children) {this.children = children;}public static long getSerialversionuid() {return serialVersionUID;}}



使用的场景介绍

1.图书馆的种类。

2.权限管理.

特点:有父类和子类关系,并且子类就是本类,需要配置两个关系,一个是一对多的时候作为1的一端。在就是作为n的一端,分别对应上面的这两个配置。

0 0
原创粉丝点击