hibernate的自关联的表示方法

本文介绍了使用XML配置文件进行数据库映射,以及在权限管理中实现父子类关系的详细步骤,包括类定义、属性设置及关系配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置文件

<?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;
	//功能的url
	private 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的一端,分别对应上面的这两个配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值