天天看點

hibernate 繼承 映射中的幾點問題

public class SysModule {

/**

* 主鍵

*/

private int id;

/**

* 唯一标示

*/

private String sn;

/**

* 子產品名稱

*/

private String sysModuleName;

/**

* 子產品位址

*/

private String sysUrl;

/**

* 同一層次上各個子產品之間的排序

*/

private int orderId;

/**

* 是否葉子節點

*/

private int isLeaf;

/**

* 所在層

*/

private String sysLevel;

/**

* 備注

*/

private String remark;

/**

* 孩子子產品

*/

private Set<SysModule> childModules;

/**

* 上級子產品

*/

private SysModule parentModule;

//.... setter getter

public class OrgDep extends SysModule {

// 無屬性

}

public class OrgPost extends SysModule {

// 無屬性

}

<hibernate-mapping package="cn.xyurp.system.bean">

<class name="cn.xyurp.system.bean.SysModule"

table="t_sysmodule">

<id name="id">

<generator class="native" />

</id>

<property name="sysModuleName" length="50" not-null="true" />

<property name="sysUrl" length="50" />

<property name="orderId" not-null="true"/>

<property name="sn" length="20" not-null="true"/>

<property name="isLeaf" not-null="true"/>

<property name="sysLevel" not-null="true"/>

<property name="remark" length="3000" />

<many-to-one column="pid" name="parentModule" />

<set name="childModules" lazy="extra" inverse="true"

order-by="orderId">

<key column="pid" />

<one-to-many class="cn.xyurp.system.bean.SysModule" />

</set>

</class>

</hibernate-mapping>  

<hibernate-mapping package="cn.xyurp.rsgl.bean">

<class name="OrgDep" table="t_rsgl_Org_dep">

<!-- 組織機構管理:部門管理 -->

<id name="id">

<generator class="native" />

</id>

<!-- 部門編碼 -->

<property name="sn" column="orgId" type="string" length="50" not-null="true"></property>

<!-- 部門名稱 -->

<property name="sysModuleName" column="depName" length="50" not-null="true" />

<!-- 顯示順序 -->

<property name="orderId" not-null="true"/>

<many-to-one column="pid" name="parentModule" />

<set name="childModules" lazy="extra" inverse="true" order-by="orderId">

<key column="pid" />

<one-to-many class="OrgDep" />

</set>

<!-- 描述 -->

<property name="remark" type="string" length="3000"></property>

</class>

</hibernate-mapping>

<hibernate-mapping package="cn.xyurp.rsgl.bean">

<class name="OrgPost" table="t_rsgl_Org_post">

<!-- 組織機構管理:崗位管理管理 -->

<id name="id">

<generator class="native" />

</id>

<!-- 部門編碼 -->

<property name="sn" column="postId" type="string" length="50" not-null="true"></property>

<!-- 部門名稱 -->

<property name="sysModuleName" column="postName" length="50" not-null="true" />

<!-- 顯示順序 -->

<property name="orderId" not-null="true"/>

<many-to-one column="pid" name="parentModule" />

<set name="childModules" lazy="extra" inverse="true"

order-by="orderId">

<key column="pid" />

<one-to-many class="OrgPost" />

</set>

<!-- 描述 -->

<property name="remark" type="string" length="3000"></property>

</class>

</hibernate-mapping>

select count(*) from SysModule ...

會生成 三條 sql

select count(*) from t_sysModule

select count(*) from t_rsgl_org_dep

select count(*) from t_rsgl_org_post