`
zc_888
  • 浏览: 19570 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

Hibernate级联实践之二(many-to-one)

 
阅读更多

一。mapping

这里使用两张表,分别是TBL_OSU_PRODUCT_I和TBL_OSU_PRODUCTMESSAGE_I,前者与后者是一对多的关系,映射文件如下:

1.TBL_OSU_PRODUCT_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.product.model.OsuProduct" table="TBL_OSU_PRODUCT_I" schema="OSU_WORK">
<id name="id" type="long">
<column name="PRDU_ID" precision="10" scale="0" />
<generator class="sequence">
<param name="sequence">SEQ_OSU_PRODUCT_I</param>
</generator>
</id>
<property name="prduName" type="string">
<column name="PRDU_NAME" length="200" not-null="true" />
</property>
<property name="prduDescription" type="string">
<column name="PRDU_DESCRIPTION" length="200" />
</property>


<set name="productMessage" cascade="all-delete-orphan" inverse="true" lazy="false">
<key column="PRME_PRDUID_FK"/>
<one-to-many class="com.netqin.function.osuproduct.productmessage.model.ProductMessage"/>
</set>


</class>
</hibernate-mapping>

说明:cascade="all-delete-orphan":级联删除、修改和更新; inverse="true":控制权交给对方,既新增或修改时,ProductMessage需要明确指定对OsuProduct的关联;

lazy="false":一并加载子表,方便页面展示(该属性可以根据实际情况制定);<key column="PRME_PRDUID_FK"/> :子表中关联主表的字段名称

2.TBL_OSU_PRODUCTMESSAGE_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.productmessage.model.ProductMessage" table="TBL_OSU_PRODUCTMESSAGE_I" schema="OSU_WORK">
<id name="prmeId" type="java.lang.Long">
<column name="PRME_ID" precision="10" scale="0" />
<generator class="sequence">
<param name="sequence">SEQ_OSU_PRODUCTMESSAGE_I</param>
</generator>
</id>

<property name="prmeMecoidFk" type="java.lang.Long">
<column name="PRME_MECOID_FK" precision="10" scale="0" not-null="true" />
</property>

<many-to-one name="product"
class="com.netqin.function.osuproduct.product.model.OsuProduct">
<column name="PRME_PRDUID_FK" />
</many-to-one>


</class>
</hibernate-mapping>

说明:配置比较简单。

二。使用方法

主表操控子表方法:

1.新增:

String[] messageContentId = request.getParameterValues("messageContentId");//提示语主题ID

//提示语
if(messageContentId!=null&&messageContentId.length>0){
for(int i=0;i<messageContentId.length;i++){
ProductMessage pm = new ProductMessage();
pm.setPrmeMecoidFk(Long.parseLong(messageContentId[i]));
pm.setProduct(object);//因为是inverse="true",所以需要子表指定主表对象
object.getProductMessage().add(pm);//这个步骤不能省,否则不能级联保存子表
}
}

dao.save(object);//object为主表对象,可以通过new得到

2.修改:

OsuProduct object_tem = this.findById(object.getId());//从数据库中取到主表对象

object_tem.getProductMessage().removeAll(object_tem.getProductMessage());//清空提示语,先清空在添加

String[] messageContentId = request.getParameterValues("messageContentId");//提示语主题ID
//提示语
if(messageContentId!=null&&messageContentId.length>0){
for(int i=0;i<messageContentId.length;i++){
ProductMessage pm = new ProductMessage();
pm.setPrmeMecoidFk(Long.parseLong(messageContentId[i]));
pm.setProduct(object_tem);
object_tem.getProductMessage().add(pm);
}
}

//将页面传递过来的数据copy到持久对象中
copyProject(object_tem, object);

dao.update(object_tem);//关于主表的其余属性的修改可以应用一个copy方法

copy方法:

private void copyProject(OsuProduct dest, OsuProduct sour) {
dest.setPrduDescription(sour.getPrduDescription());// 描述
}

3.删除

删除主表即可

dao.delete(object);

分享到:
评论

相关推荐

    hibernate many-to-one(多对一)及 cascade(级联).doc

    深入理解hibernate many-to-one(多对一)及 cascade(级联).

    hibernate3.2中文文档(chm格式)

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联...

    HibernateAPI中文版.chm

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联...

    Hibernate+中文文档

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联...

    最全Hibernate 参考文档

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 三重关联...

    hibernate总结

    &lt;one-to-many class="org.wllt.www.po.Emp" /&gt; &lt;/hibernate-mapping&gt; Hibernate映射多对一: public class Emp implements java.io.Serializable { private Integer empid; private Dept dept; private...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联...

    Hibernate中文详细学习文档

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联...

    Hibernate 中文 html 帮助文档

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,...

    Hibernate教程

    7.2.5. 一对多关联(One-to-many Associations) 7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合(Sorted collections) 7.3.2. 双向关联(Bidirectional associations) 7.3.3. 三重关联...

    Hibernate3+中文参考文档

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 三重关联...

    hibernate 体系结构与配置 参考文档(html)

    一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,涉及...

    hibernate 框架详解

    一对多关联(One-to-many Associations) 7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合(Sorted collections) 7.3.2. 双向关联(Bidirectional associations) 7.3.3. 三重关联...

    hibernate3.04中文文档.chm

    22.2. 双向的一对多关系(Bidirectional one-to-many) 22.3. 级联生命周期(Cascading lifecycle) 22.4. 级联与未保存值(Cascades and unsaved-value) 22.5. 结论 23. 示例:Weblog 应用程序 23.1. 持久化类 ...

    Hibernate参考文档

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,...

    hibernate 教程

    一对多关联(One-To-Many Associations) 6.5. 延迟初始化(延迟加载)(Lazy Initialization) 6.6. 集合排序(Sorted Collections) 6.7. 使用&lt;idbag&gt;&lt;br&gt;6.8. 双向关联(Bidirectional Associations)...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    7.1.1 [many-to-one]元素的not-null属性 153 7.1.2 级联保存和更新 155 7.2 映射一对多双向关联关系 156 7.2.1 [set]元素的inverse属性 161 7.2.2 级联删除 163 7.2.3 父子关系 164 7.3 映射一对多双向自身...

    NHibernate中文文档

    一对多关联(One-To-Many Associations) 14 延迟初始化(延迟加载)(Lazy Initialization) 14 集合排序(Sorted Collections) 14 使用 &lt;idbag&gt; 14 双向关联(Bidirectional Associations) 14 三重关联(Ternary ...

    hibernate

    一对多关联(One-To-Many Associations) 6.5. 延迟初始化(延迟加载)(Lazy Initialization) 6.6. 集合排序(Sorted Collections) 6.7. 使用&lt;idbag&gt;&lt;br&gt;6.8. 双向关联(Bidirectional Associations)...

    精通Hibernate:对象持久化技术第二版part3

    7.1.1 [many-to-one]元素的not-null属性 153 7.1.2 级联保存和更新 155 7.2 映射一对多双向关联关系 156 7.2.1 [set]元素的inverse属性 161 7.2.2 级联删除 163 7.2.3 父子关系 164 7.3 映射一对多双向自身...

Global site tag (gtag.js) - Google Analytics