一。mapping
这里使用两张表,分别为TBL_OSU_PRODUCTFILTERDETAIL_I和TBL_OSU_PRODUCTFILTER_I,前者为复合主键,后者与前者为一对多的关系。
1.TBL_OSU_PRODUCTFILTERDETAIL_I
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.netqin.function.osuproduct.filter.model.ProductFilterDeatil" table="TBL_OSU_PRODUCTFILTERDETAIL_I" schema="OSU_WORK">
<composite-id name="id" class="com.netqin.function.osuproduct.filter.model.ProductFilterDeatilId">
<key-many-to-one name="filter" entity-name="com.netqin.function.osuproduct.filter.model.ProductFilter" lazy="false">
<column name="PFDE_PRFIID_FK"></column>
</key-many-to-one>
<key-many-to-one name="product" entity-name="com.netqin.function.osuproduct.product.model.OsuProduct" lazy="false">
<column name="PFDE_PRDUID_FK"></column>
</key-many-to-one>
</composite-id>
<property name="pfdeOrder" type="java.lang.Long">
<column name="PFDE_ORDER" precision="10" scale="0" not-null="true" />
</property>
</class>
</hibernate-mapping>
说明:该表为复合主键,且每个字段与其它表为many-to-one关系,这样做方便在页面中直接使用关联对象,注意lazy="false"。
2.TBL_OSU_PRODUCTFILTER_I
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.netqin.function.osuproduct.filter.model.ProductFilter" table="TBL_OSU_PRODUCTFILTER_I" schema="OSU_WORK">
<id name="prfiId" type="java.lang.Long">
<column name="PRFI_ID" precision="10" scale="0" />
<generator class="sequence">
<param name="sequence">SEQ_OSU_PRODUCTFILTER_I</param>
</generator>
</id>
<property name="prfiBusiidFk" type="java.lang.String">
<column name="PRFI_BUSIID_FK" length="10" not-null="true" />
</property>
<set name="productFilterDetailes" cascade="all-delete-orphan" inverse="true" lazy="false">
<key column="PFDE_PRFIID_FK"/>
<one-to-many class="com.netqin.function.osuproduct.filter.model.ProductFilterDeatil"/>
</set>
</class>
</hibernate-mapping>
说明:这里说明即便是复合主键,也可以使用one-to-many只关联其中的一个字段。
二。操作方法
1.新增
ProductFilter pf = new ProductFilter();
pf.setPrfiBusiidFk(business[i]);
//筛选明细
for(int j=0;j<par.length;j++){
tem = par[j].split(",");//相应的子表属性,这里仅为举例
ProductFilterDeatil pfd = new ProductFilterDeatil();
ProductFilterDeatilId pfdfk = new ProductFilterDeatilId();//复合主键对象
OsuProduct product = (OsuProduct)dao.findById(OsuProduct.class, Long.parseLong(tem[0]));
pfdfk.setFilter(pf);
pfdfk.setProduct(product);
pfd.setId(pfdfk);//封装复合主键
pfd.setPfdeOrder(Long.parseLong(tem[2]));
pf.getProductFilterDetailes().add(pfd);
}
dao.save(pf );
2.修改和删除方法与many-to-one类似,不在赘述。
这里需要注意的是,复合主键是不能重复的,所以在新增或修改时需要做异常处理,或在前台做控制。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hanqunfeng/archive/2009/08/27/4489811.aspx
分享到:
相关推荐
用于配置hibernate.cfg.xml和相当的应用,值得看看.........
NULL 博文链接:https://xhfei.iteye.com/blog/691322
毕业设计spring+struts2+hbernate博客系统源码+部署文档+论文
struts + DAO + Hbernate的脚本
自己昨晚上写的 但是没有加入验证码验证机制 数据库 chat 表名user 字段 id name pass
Hbernate的有源码的文件,可以帮助你学好hbernat
一个完整的工程,主要功能为:spring+hbernate对clob、blob字段的处理 包括:数据脚本、典型的SSH框架处理,以及spring、hibernate数据批量保存等功能源码、所用到的lib包 数据环境为:oracle 10G 开发:Mycelipse5.1...
Spring-HBERNATE Spring -hibernate 与 mysql Spring-HBERNATE
hibernate一份不错的文档,比较适合开始学习或者不熟练hibernate的朋友
集合struts,spring,hibernate三大框架开发,是一个很好的项目实例
最近入职一家公司,使用的 是springmvc框架,之前公司是用的struts2没接触过springmvc,所以这几天学习了一下并写了一个简单的基于注解的demo,数据库用的mysql,就两张表,有外键关联,demo实现了两张表的级联增删...
一个简单的Struts+Spring+Hibernate的登录模块的代码,含数据库代码和部分简单说明(适合刚接触Struts+Spring+Hibernate框架的开发者); 本例采用myEclipse6.0.1和tomcat6开发,可直接导入myeclipse工程运行...
Hibernate3.2官方中文参考手册PDF,以及Hibernate3.2.jar
hibernate hibernate
这个是最新版的hibernate压缩包,2016年传智播客的工具包
使用Hibernate的一个完整例子 这是我学习的时候下载的,看着不错 喜欢的可以下载 不要分 但愿能帮到你们
自己用myeclipse开发工具写的一个sh的留言板,包括源代码和jsp页面(jsp页面写的很简单)
struts+hibernate留言板(sh) list分页技术
1 Database : use mysql5 2 Developer: MyEclipse 5 3 Liberary : J2EE1.4 + JDK1.5 + Hibernate 3.1 + Log + mySQL Build the normal Java Project and add the liberary to all the project....
struts+hibernate+spring 增删改查实例,非常适合初学者