论坛首页 Java企业应用论坛

一个表的自连接关系如何表达?

浏览 7843 次
精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2003-09-20  
如下表:
table test {
     ID varvhar(5) primary key,
     ParentID varchar(5)
}

ParentID和ID是主从关系,这样的表如何使用Hibernate进行map?
   发表时间:2003-09-20  
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
    
<hibernate-mapping>

<!-- 
    Created by Middlegen Hibernate plugin

    http://boss.bekk.no/boss/middlegen/
    http://hibernate.sourceforge.net/
-->

    <class name="airline.hibernate.Group" 
           table="GROUP"> 

    <id
        name="id"
        type="java.lang.String"
        column="id"
    >
        <generator class="uuid.hex" />
    </id>

        <property
	name="myname"
	 type="java.lang.String"
	column="GROUP_NAME"
	length="50"
    />


        <many-to-one name="parentGroup" 
                     class="airline.hibernate.Group" 
                     column="PARENT_GROUP_ID" 
                     cascade="none" 
                     not-null="false"/> 

        <set name="childGroups" 
               table="GROUP" 
               cascade="all" 
               inverse="true"> 
            <key column="PARENT_GROUP_ID"/> 
            <one-to-many class="airline.hibernate.Group"/> 
        </set> 

    </class>
    
</hibernate-mapping>    
0 请登录后投票
   发表时间:2003-09-22  
你使用的表结构是否类似于:

table GROUP {
     ID NUMBER(5);,
     PARENT_GROUP_ID NUMBER(5);,
     GROUP_NAME VARCHAR(32);
};


我试验了一下我自己的表结构,在使用提示我没有合适的类进行初始化.

我的表结构为
table OPERATION {
     OperID VARCHAR(5);,
     ParentID VARCHAR(5);,
     OperName VARCHAR(60);,
     Description VARCHAR(128);
};


xml文件为:
<hibernate-mapping>
    <class name="test.Operation" table="T_Operation" dynamic-update="false" dynamic-insert="false">
        <id name="id" column="OperID" type="string">
            <generator class="assigned"/>
        </id>

        <property name="operName" type="string" update="true" insert="true" column="OperName"/>
        <property name="description" type="string" update="true" insert="true" column="Description"/>

        <many-to-one name="operations" class="test.Operation" cascade="none" outer-join="auto" update="true" insert="true" column="ParentID" not-null="false" />

        <set name="operations" table="T_Operations" lazy="true" inverse="true" cascade="all" sort="unsorted" >
              <key column="ParentID"/>
              <one-to-many class="test.Operation"/>
        </set>
    </class>
</hibernate-mapping>


请问有什么错吗?谢谢!
0 请登录后投票
   发表时间:2003-09-22  
已经搞定了,加黑体字的地方是我在调试中出错的地方:
<hibernate-mapping>
  <class name="test.Operation" table="T_Operation"        
         dynamic-update="false" dynamic-insert="false">
    <id name="id" column="OperID" type="string">
     		<generator class="assigned" />
    </id>
    
    <property name="parentId" type="string" [b]update="false"
    	insert="false"[/b] column="ParentID"/>
    
    <property name="operName" type="string" update="true"
       insert="true" column="OperName"/>
    
    <property name="description" type="string" update="true"
       insert="true" column="Description"/>
    
    <many-to-one name="parent"
                   class="test.Operation"
                   cascade="none"
                   outer-join="auto"
                   update="true"
                   insert="true"
                   column="ParentID"
                   [b]not-null="true"[/b]/>
    <set name="operations"
         table="T_Operations"
         lazy="true"
         inverse="true"
         cascade="all"
         sort="unsorted">
  
         <key column="ParentID"/>
         <one-to-many class="test.Operation"/>
    </set>
  </class>
</hibernate-mapping>

另外,在我的Operation类中,增加了一个以下的代码:
/*声明一个父对象的内部属性 */
private Operation parent;

/* getter */
public Operation getParent(); { 
    return parent; 
}

/* setter */
public void setParent(Operation parent); {
    this.parent = parent;
}


如上改过后就可以使用了!谢谢bruce!!!
0 请登录后投票
   发表时间:2003-09-22  
不好意思,我不知道在标签中不能使用其它的标签,在上面的贴子中,之间的应当是我说的黑体字的部分!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics