Hibernate 处理 一对多 关联

 

多对一映射

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
    Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
    <class name="com.gis.hibernate.entity.WseLocationAddressPhone" table="WSE_LOCATION_ADDRESS_PHONE" catalog="wse">
        <composite-id name="id" class="com.gis.hibernate.entity.WseLocationAddressPhoneId">
            <key-many-to-one name="wseLocation" class="com.gis.hibernate.entity.WseLocation">
                <column name="location_id" />
            </key-many-to-one>
            <key-many-to-one name="wseAddress" class="com.gis.hibernate.entity.WseAddress">
                <column name="address_id" />
            </key-many-to-one>
            <key-many-to-one name="wsePhone" class="com.gis.hibernate.entity.WsePhone">
                <column name="phone_id" />
            </key-many-to-one>
        </composite-id>
        <many-to-one name="wseAddress" class="com.gis.hibernate.entity.WseAddress" update="false" insert="false" fetch="select">
            <column name="address_id" not-null="true" unique="true" />
        </many-to-one>
        <many-to-one name="wseLocation" class="com.gis.hibernate.entity.WseLocation" update="false" insert="false" fetch="select">
            <column name="location_id" not-null="true" unique="true" />
        </many-to-one>
        <many-to-one name="wsePhone" class="com.gis.hibernate.entity.WsePhone" update="false" insert="false" fetch="select">
            <column name="phone_id" not-null="true" unique="true" />
        </many-to-one>
    </class>
</hibernate-mapping>
 

一对多映射

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
    Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
    <class name="com.gis.hibernate.entity.WsePhone" table="WSE_PHONE" catalog="wse">
        <id name="phoneId" type="java.lang.Integer">
            <column name="phone_id" />
            <generator class="increment" />
        </id>
        <property name="fixedPhone" type="java.lang.String">
            <column name="fixed_phone" length="64" />
        </property>
        <property name="cellPhone" type="java.lang.String">
            <column name="cell_phone" length="12" />
        </property>
        <property name="alterPhone" type="java.lang.String">
            <column name="alter_phone" length="32" />
        </property>
        <set name="wseLocationAddressPhones" inverse="true">
            <key>
                <column name="phone_id" not-null="true" unique="true" />
            </key>
            <one-to-many class="com.gis.hibernate.entity.WseLocationAddressPhone" />
        </set>
    </class>
</hibernate-mapping>

代码

 

/**
 *Feb 21, 2007
 * Zhou JianGuo
 * MSN:zhuojianguo_leo@hotmail.com
 */
package com.gis.struts.data.action;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.gis.hibernate.dao.GenticDAOFactory;
import com.gis.hibernate.entity.Classification;
import com.gis.hibernate.entity.GisData;
import com.gis.hibernate.entity.GisIndex;
import com.gis.hibernate.entity.GisLevel;
import com.gis.hibernate.entity.WseAddress;
import com.gis.hibernate.entity.WseDistrict;
import com.gis.hibernate.entity.WseLocation;
import com.gis.hibernate.entity.WseLocationAddressPhone;
import com.gis.hibernate.entity.WseLocationAddressPhoneId;
import com.gis.hibernate.entity.WsePhone;
import com.gis.hibernate.entity.WseRoad;
import com.gis.struts.base.action.BaseAction;
import com.gis.struts.data.form.DataForm;
import com.gis.util.page.Pager;
import com.gis.util.page.PageHelp;
import com.gis.util.page.PageQuery;


public class DataAction extends BaseAction {

 /**
  *Feb 21, 2007
  * Zhou JianGuo
  * 小白
  * 中国电信上海技术研究院
  * MSN:zhuojianguo_leo@hotmail.com
  */
 public DataAction() {
  // TODO Auto-generated constructor stub
 }
 public ActionForward list(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException
 {
  logger.info("#########Begin Data list ActionForward execute#######"); 
  List level_ = new ArrayList();
  List list1=GenticDAOFactory.getFactory().getInstance().findByEntity("GisIndex");
  System.out.println("list1="+list1);
  if (list1 != null & list1.size() > 0) {
   for (int i = 0; i < list1.size(); i++) {
    GisIndex tmp = (GisIndex) list1.get(i);
    if (tmp != null) {
     level_.add(new GisIndex(tmp.getLevel(),new String(tmp.getDescription().getBytes("ISO-8859-1"),"GBK")));
    }
   }
  }
  List index_ = new ArrayList();
  List list2=GenticDAOFactory.getFactory().getInstance().findByEntity("GisLevel");
  if (list2 != null & list2.size() > 0) {
   for (int i = 0; i < list2.size(); i++) {
    GisLevel tmp = (GisLevel) list2.get(i);
    if (tmp != null) {
     index_.add(new GisLevel(tmp.getLevel(),new String(tmp.getDescription().getBytes("ISO-8859-1"),"GBK")));
    }
   }
  }
  List list=GenticDAOFactory.getFactory().getInstance().findByEntity("Classification");
  List Classification = new ArrayList();
  if (list != null & list.size() > 0) {
   for (int i = 0; i < list.size(); i++) {
    Classification tmp = (Classification) list.get(i);
    if (tmp != null) {
     Classification.add(new Classification(tmp.getType(),tmp.getChineseName()+"/"+tmp.getEnglishName()));
    }
   }
  }
  DataForm DataForm=(DataForm)form;
  request.setAttribute("level_", level_);
  request.setAttribute("index_", index_);
  request.setAttribute("Classification", Classification);
  HttpSession session= request.getSession();
  String bookin=(String) session.getAttribute("userid");
  DataForm.setBookin(bookin);
  return mapping.findForward(LIST);
  
 }
 public ActionForward add(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException
 {
  logger.info("#########Begin Data add ActionForward execute#######");
       DataForm DataForm=(DataForm)form;
    WseAddress address=new WseAddress();
    WseDistrict district=new WseDistrict();
    WseLocationAddressPhone wap=new WseLocationAddressPhone();
    WseLocation location=new WseLocation();
    WsePhone phone=new WsePhone();
       WseRoad road=new WseRoad();
   
       String level=DataForm.getlevel();//场所级别
       String editorsRecommendation=DataForm.getEditorsRecommendation();//推荐指数
       String classification=DataForm.getClassification();//大类
      
       String locationNameChn=DataForm.getLocationNameChn();//场所名
       String locationNameEn=DataForm.getLocationNameEn();
       String locationNamePinyin=DataForm.getLocationNamePinyin();
      
       String featuredKeyWordsEn=DataForm.getFeaturedKeyWordsEn();//特征关键字
       String featuredKeyWordsChn=DataForm.getFeaturedKeyWordsChn();
      
       String locationDescriptionEn=DataForm.getLocationDescriptionEn();//特征描述
       String locationDescriptionChn=DataForm.getLocationDescriptionChn();
      
       try
       {
        location.setLocationNameChn(locationNameChn);
        location.setLocationNameEn(locationNameEn);
        location.setLocationNamePinyin(locationNamePinyin);
        location.setType(Integer.parseInt(classification));
        location.setPopularity(new Long(0));
        location.setEditorsRecommendation(new Integer(0));
        location.setFeaturedKeyWordsChn(featuredKeyWordsChn);
        location.setFeaturedKeyWordsEn(featuredKeyWordsEn);
        location.setLocationDescriptionChn(locationDescriptionChn);
        location.setLocationDescriptionEn(locationDescriptionEn);
        System.out.println("开始往Location表里插入数据...");
        GenticDAOFactory.getFactory().getInstance().save(location);
        System.out.println("插入成功...id:"+location.getLocationId());
       }catch(Exception e)
       {
        System.out.println("Location插入数据出错!"+e);
       }
      
       String fixedPhone=DataForm.getPhone();//电话
       String cellPhone=DataForm.getCellPhone();
       String alterPhone=DataForm.getAlterPhone();
       try
       {
        phone.setFixedPhone(fixedPhone);
        phone.setCellPhone(cellPhone);
        phone.setAlterPhone(alterPhone);
        System.out.println("开始往Phone表里插入数据...");
        GenticDAOFactory.getFactory().getInstance().save(phone);
        System.out.println("插入成功...id:"+phone.getPhoneId());
       }catch(Exception e)
       {
        System.out.println("Phone插入数据出错!"+e);
       }
      
       String districtNameEn=DataForm.getDistrictNameEn();//地区名
       String districtNameChn=DataForm.getDistrictNameChn();
       String districtNamePinyin=DataForm.getDistrictNamePinyin();
       try
       {
        district.setDistrictNameEn(districtNameEn);
        district.setDistrictNameChn(districtNameChn);
        district.setDistrictNamePinyin(districtNamePinyin);
        System.out.println("开始往District表里插入数据...");
        GenticDAOFactory.getFactory().getInstance().save(district);
        System.out.println("插入成功...id:"+district.getDistrictId());
       }catch(Exception e)
       {
        System.out.println("District插入数据出错!"+e);
       }
      
       String roadNameEn=DataForm.getRoadNameEn();//街道路
       String roadNameChn=DataForm.getRoadNameChn();
       String roadNamePinyin=DataForm.getRoadNamePinyin();
       try
       {
        road.setRoadNameEn1(roadNameEn);
        road.setRoadNameChn(roadNameChn);
        road.setRoadNamePinyin(roadNamePinyin);
        System.out.println("开始往Road表里插入街道数据...");
        GenticDAOFactory.getFactory().getInstance().save(road);
        System.out.println("插入成功...id:"+road.getRoadId());
       }catch(Exception e)
       {
        System.out.println("Road插入数据出错!"+e);
       }
       Integer tmpRoadId=road.getRoadId();
      
       String nearRoadNameEn=DataForm.getNearRoadNameEn();//交叉路
       String nearRoadNameChn=DataForm.getNearRoadNameChn();
       String nearRoadNamePinyin=DataForm.getNearRoadNamePinyin();
       try
       {
        road.setRoadNameEn1(nearRoadNameEn);
        road.setRoadNameChn(nearRoadNameChn);
        road.setRoadNamePinyin(nearRoadNamePinyin);
        System.out.println("开始往Road表里插入交叉路数据...");
        GenticDAOFactory.getFactory().getInstance().save(road);
        System.out.println("插入成功...id:"+road.getRoadId());
       }catch(Exception e)
       {
        System.out.println("Road插入数据出错!"+e);
       }
      
       String addressBriefEn=DataForm.getAddressBriefEn();//地址
       String addressBriefChn=DataForm.getAddressBriefChn();
       String addressNumber=DataForm.getAddressNumber();//门牌号
       try
       {
        address.setAddressBriefChn(addressBriefChn);
        address.setAddressBriefEn(addressBriefEn);
        address.setAddressNumber(addressNumber);
        address.setDistrictId(district.getDistrictId());
        address.setNearRoadId(String.valueOf(road.getRoadId()));
        address.setRoadId(tmpRoadId);
        System.out.println("开始往Address表里插入数据...");
        GenticDAOFactory.getFactory().getInstance().save(address);
        System.out.println("插入成功...id:"+address.getAddressId());
       }catch(Exception e)
       {
        System.out.println("Address插入数据出错!"+e);
       }
      
       try
       {
       WseLocationAddressPhoneId wapId=new WseLocationAddressPhoneId();
       wapId.setWseAddress(address);
       wapId.setWseLocation(location);
       wapId.setWsePhone(phone);
       wap.setId(wapId);
       /*
       wap.setWseAddress(address);
       wap.setWseLocation(location);
       wap.setWsePhone(phone);
       */
       wap.setId(wapId);
       System.out.println("开始往wap表里插入数据...");
       GenticDAOFactory.getFactory().getInstance().save(wap);
       System.out.println("插入成功...");
       }catch(Exception e)
       {
        System.out.println("wap插入数据出错!"+e);
       }
      

      
       String begtime=DataForm.getBegtime();//日期
      
       String bookin=DataForm.getBookin();//登记人
      
  return mapping.findForward(SUCCESS);
 }
 public ActionForward search(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException
 {
  logger.info("#########Begin Data search ActionForward execute#######");
  String count="select count(*) from WseLocationAddressPhone";
  String query = "from WseLocationAddressPhone wap";
  String queryURL="DataAction.gis?method=search";
  List list=new ArrayList();
  int totalRows=new PageQuery().pageQuery(count);
        Pager page=PageHelp.getPager(request,totalRows);
  list=new PageQuery().search(page.getPageSize(),page.getStartRow(),query);
  request.setAttribute("list",list);
  request.setAttribute("page",page);
  request.setAttribute("queryURL", queryURL);
  return mapping.findForward(SEARCH);
  
 }
 public ActionForward delete(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException
 {
  logger.info("#########Begin Data delete ActionForward execute#######");
  DataForm DataForm=(DataForm)form;
  GisData GisData=new GisData();
  String[] select=DataForm.getSelectMes();
  for(int i=0;i<select.length;i++)
  {
   GisData=(GisData) GenticDAOFactory.getFactory().getInstance().findById("com.gis.hibernate.entity.GisData", Integer.parseInt(select[i]));
   GenticDAOFactory.getFactory().getInstance().delete(GisData);
  }
  return mapping.findForward(DELETE);
 }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值