hibernate中Map类型的双向一对多映射


有两个类:MapLayer和MapLayerField
package com.hgTIS.webgis.model;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * PointLayer generated by MyEclipse - Hibernate Tools
 */

public class MapLayer  implements java.io.Serializable {

    /**图层id**/
    private Long id;

    /**图层英文名称,动态图层与数据库标明一致,静态图层与图片名称一致**/
     private String name;
     /**图层中文名称**/
     private String chName;
    
     /**是否显示**/
     private String display;
     /**图层叠加次序**/
     private Integer placeOrder;
     /**最小比例等级**/
     private String minScale;
     /**最大比例等级**/
     private String maxScale;
    
     /**图层类型.point/layer/polygon**/
     private String feaType;
     /**图层类型:1动态;2静态;3空间查询;**/
     private String type;
    
     /**坐标系统**/
    private String coordinateSystem;
    /**父类图层ID;静态图层空间查询的时候使用**/
    private MapLayer parentLayer;

    /**必须用的字段**/
    private Map<String,MapLayerField> displayFields =new LinkedHashMap<String, MapLayerField>(0);
    /**分类显示的字段**/
    private String sortField;
/**
    geters and seters
**/
}

MapLayerField.java
package com.hgTIS.webgis.model;


/**
 * 图层字段对象
 */

public class MapLayerField  implements java.io.Serializable {


    /**唯一标识**/
     private Long id;
    
     /**字段名称,一般与数据库字段一致**/
     private String name;
    
     /**中文名称**/
     private String chName;
    
     /**是否系统字段**/
     private String systemField;
    
     /**是否显示字段**/
     private String viewField;
    
     /**是否分类字段**/
     private String sortField;

     /**标题字段**/
     private String titleField;
    
     /**次序**/
     private Integer forder;
 
     private MapLayer mapLayer;

/**
    geters and seters
**/
}

xml文件
MapLayer.hbm.xml
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"   
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4. <!--  
  5.     Mapping file autogenerated by MyEclipse Persistence Tools 
  6. -->  
  7. <hibernate-mapping>  
  8.     <class name="com.hgTIS.webgis.model.MapLayer" table="mapLayer" >  
  9.         <id name="id" type="long">  
  10.             <column name="id" />  
  11.             <generator class="native"/>  
  12.         </id>  
  13.         <property name="name" column="name" not-null="true"/>  
  14.         <property name="chName" column="chName"/>  
  15.         <property name="display" column="display"/>  
  16.         <property name="placeOrder" column="placeOrder"/>  
  17.         <property name="minScale" column="minScale"/>  
  18.         <property name="maxScale" column="maxScale"/>  
  19.         <property name="feaType" column="feaType"/>  
  20.         <property name="type" column="type"/>  
  21.         <property name="coordinateSystem" column="coordinateSystem"/>  
  22.         <many-to-one name="parentLayer" column="parentLayerId"/>  
  23.         <property name="sortField" column="sortField"/>  
  24.         <map name="displayFields" inverse="true" cascade="all">  
  25.             <key column="layerid"/>  
  26.             <map-key type="string" column="name"/><!--  上面引用的那篇文章说index标签也可以-->  
  27.             <one-to-many class="com.hgTIS.webgis.model.MapLayerField"/>  
  28.         </map>  
  29.     </class>  
  30. </hibernate-mapping>  

MapLayerField.hbm.xml

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"   
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4. <!--   
  5.     Mapping file autogenerated by MyEclipse Persistence Tools 
  6. -->  
  7. <hibernate-mapping>  
  8.     <class name="com.hgTIS.webgis.model.MapLayerField" table="mapLayerField" >  
  9.         <id name="id" type="long">  
  10.             <column name="id" />  
  11.             <generator class="native" />  
  12.         </id>  
  13.         <property name="name" column="name" not-null="true"/>  
  14.         <property name="chName" column="chName"/>  
  15.         <property name="systemField" column="systemField"/>  
  16.         <property name="viewField" column="viewField"/>  
  17.         <property name="sortField" column="sortField"/>  
  18.         <property name="titleField" column="titleField"/>  
  19.         <property name="forder" column="forder"/>  
  20.         <many-to-one name="mapLayer" column="layerid"/>  
  21.     </class>  
  22. </hibernate-mapping>  

 

主要是映射文件中的map标签中的map-key标签一定要与相应的类中的属性一致!


欢迎加我的qq技术群425783133

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值