package com.bjsxt.oa.model;import java.util.Set;public class Module {

private int id;

private String name;

private Module parent;

private Set children;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Module getParent() {
return parent;
}
public void setParent(Module parent) {
this.parent = parent;
}
public Set getChildren() {
return children;
}
public void setChildren(Set children) {
this.children = children;
}
}private Set children;
set的多对一对应的是自身,我看到xml中
  <set lazy="extra" inverse="true" name="children">
      <key column="pid"/>
      <one-to-many class="com.bjsxt.oa.model.Module"/>
    </set>
这个xml配置用注解怎么写啊?

解决方案 »

  1.   

    @OneToMany啊,你不是对应的是自身吗?你给你定义类中定义一个类型为这个类的Set集合试一试,我没试过你这个问题。。
      

  2.   


    @ManyToOne
    @JoinColumn(name="pid")
    public Module getParent() {
       return parent;
    }
    @OneToMany(mappedBy="parent")
    public Set getChildren() {
       return children;
    }
      

  3.   

    @ManyToOne(targetEntity=Module.class)
    @JoinColumn(name="pid")
      

  4.   

    上面的发错了。不好,重新发一遍。
    package com.esft.tapwater.model;
    import java.util.Set;public class Module
    {
    private int id;
    private String name;
    private String sn;
    private String url;
    private int orderNo;
    private Module parent;  //父机构
    private Set children;   //子机构 public Set getChildren()
    {
    return children;
    }
    public void setChildren( Set children )
    {
    this.children = children;
    }
    public int getId()
    {
    return id;
    }
    public void setId( int id )
    {
    this.id = id;
    }
    public String getName()
    {
    return name;
    }
    public void setName( String name )
    {
    this.name = name;
    }
    public int getOrderNo()
    {
    return orderNo;
    }
    public void setOrderNo( int orderNo )
    {
    this.orderNo = orderNo;
    }
    public Module getParent()
    {
    return parent;
    }
    public void setParent( Module parent )
    {
    this.parent = parent;
    }
    public String getSn()
    {
    return sn;
    }
    public void setSn( String sn )
    {
    this.sn = sn;
    }
    public String getUrl()
    {
    return url;
    }
    public void setUrl( String url )
    {
    this.url = url;
    }
    }
    现在是这样,父机构和子机构在数据库中只对用了一条数据。xml文件配置如下:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping>
      <class table="T_Module" name="com.esft.tapwater.model.Module">
        <id name="id">
          <generator class="native"/>
        </id>
        <property name="name" not-null="true" unique="true"/>
        <property name="sn" not-null="true" unique="true"/>
        <property name="url"/>
        <property name="orderNo"/>
        <many-to-one column="parentId" name="parent"/>
        <set lazy="extra" inverse="true" name="children" order-by="orderNo">
          <key column="parentId"/>
          <one-to-many class="com.esft.tapwater.model.Module"/>
        </set>
      </class>
    </hibernate-mapping>
    我想把它改成用注解写的,还有不是很明白他为什么要并成一条数据,请达人教我。
      

  5.   

    我把你写的XML改成Annotaion,我在get()方法上写注解,因此其它的方法忽略。@Id @GeneratedValue
    public int getId()
    {
    return id;
    }@Column(nullable=false, unique=true)
    public String getName()
    {
    return name;
    }public int getOrderNo()
    {
    return orderNo;
    }@ManyToOne
    @JoinColumn(name="pid")
    public Module getParent()
    {
    return parent;
    }@Column(nullable=false, unique=true)
    public String getSn()
    {
    return sn;
    }public String getUrl()
    {
    return url;
    }@OneToMany(mappedBy="parent")
    @OrderBy("orderNo")
    public Set getChildren()
    {
    return children;
    }注意:这是用记事本写的,也不知道有没有语法错误,也没有测试