一个表结构是这样的:
id        int
title     string
parent_id int要用Hibernate写一个映射文件,可以实现自身的一对一,和一对多映射。就是 一个父Id可以有多个子id元素。一个子id只能对应一个父id。

解决方案 »

  1.   

    package com.xuz.hibernate.vo;import java.math.BigDecimal;
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.FetchType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.MappedSuperclass;
    import javax.persistence.OneToMany;/**
     * AbstractOrg entity provides the base persistence definition of the Org
     * entity. @author MyEclipse Persistence Tools
     */
    @MappedSuperclass
    public abstract class AbstractOrg implements java.io.Serializable { // Fields private BigDecimal orgid;
    private Org org;
    private String orgname;
    private Set<Org> orgs = new HashSet<Org>(0); // Constructors /** default constructor */
    public AbstractOrg() {
    } /** minimal constructor */
    public AbstractOrg(BigDecimal orgid) {
    this.orgid = orgid;
    } /** full constructor */
    public AbstractOrg(BigDecimal orgid, Org org, String orgname, Set<Org> orgs) {
    this.orgid = orgid;
    this.org = org;
    this.orgname = orgname;
    this.orgs = orgs;
    } // Property accessors
    @Id
    @Column(name = "ORGID", unique = true, nullable = false, precision = 22, scale = 0)
    public BigDecimal getOrgid() {
    return this.orgid;
    } public void setOrgid(BigDecimal orgid) {
    this.orgid = orgid;
    } @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "PARENT_ID")
    public Org getOrg() {
    return this.org;
    } public void setOrg(Org org) {
    this.org = org;
    } @Column(name = "ORGNAME", length = 10)
    public String getOrgname() {
    return this.orgname;
    } public void setOrgname(String orgname) {
    this.orgname = orgname;
    } @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "org")
    public Set<Org> getOrgs() {
    return this.orgs;
    } public void setOrgs(Set<Org> orgs) {
    this.orgs = orgs;
    }}
      

  2.   

    表结构字段 类型 备注 
    OrgId NUMBER(10) 主键 
    OrgName Varchar2(128) 组织机构名称 
    ParentId NUMBER(10) 父机构ID,外键参考OrgId 
      

  3.   


    <id name="id" column="employee_id" type="int">
    <generator class="native"/>
    </id>
    <property name="name" column="employee_name" type="string" not-null="true" />

    <set name="inferiors" inverse="false" cascade="all" lazy="false">
    <key column="superior_id" />
    <one-to-many class="Employee" />
    </set> <many-to-one name="superior" class="Employee" column="superior_id" cascade="all"></many-to-one>
    单表自身映射,双向
    楼主可以参考下
      

  4.   


    不知道,调用的时候怎么用,如何添加数据呢。 添加数据时superior_id老时为null值