Hibernate级联实践之一(one-to-one)

一。mapping

这里使用两个表,分别为TBL_OSU_PRODUCT_I,TBL_OSU_PRODUCT_C,后者使用前者的主键作为自己的主键。

mapping如下:重点为红色部分

1.TBL_OSU_PRODUCT_I

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

<classname="com.netqin.function.osuproduct.product.model.OsuProduct"table="TBL_OSU_PRODUCT_I"schema="OSU_WORK">

<idname="id"type="long">

<columnname="PRDU_ID"precision="10"scale="0"/>

<generatorclass="sequence">

<paramname="sequence">SEQ_OSU_PRODUCT_I</param>

</generator>

</id>

<propertyname="prduName"type="string">

<columnname="PRDU_NAME"length="200"not-null="true"/>

</property>

<propertyname="prduDescription"type="string">

<columnname="PRDU_DESCRIPTION"length="200"/>

</property>

<one-to-onename="config"class="com.netqin.function.osuproduct.productconfig.model.OsuProductConfig"cascade="all"outer-join="true"lazy="false"/>

</class>

</hibernate-mapping>

2.TBL_OSU_PRODUCT_C

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!--

MappingfileautogeneratedbyMyEclipsePersistenceTools

-->

<hibernate-mapping>

<classname="com.netqin.function.osuproduct.productconfig.model.OsuProductConfig"table="TBL_OSU_PRODUCT_C"schema="OSU_WORK">

<idname="prduPrduidFk"type="java.lang.Long">

<columnname="PRDU_PRDUID_FK"precision="10"scale="0"/>

<generatorclass="foreign">

<paramname="property">product</param>

</generator>

</id>

<propertyname="prduPermitpresub"type="java.lang.Long">

<columnname="PRDU_PERMITPRESUB"precision="1"scale="0"not-null="true"/>

</property>

<propertyname="prduPermitzerosub"type="java.lang.Long">

<columnname="PRDU_PERMITZEROSUB"precision="1"scale="0"not-null="true"/>

</property>

<one-to-onename="product"class="com.netqin.function.osuproduct.product.model.OsuProduct"constrained="true"/>

</class>

</hibernate-mapping>

说明:1为主表,2为附属表,所以1对2的cascade="all",既增删改都由1级联负责。 lazy="false" 必须设置为false,负责页面中不能取得值。outer-join="true"关联方式使用外连接。

2中的constrained="true" 说明2引用了1的主键作为外键。

二。方法调用

1.add

object.getConfig().setProduct(object);

dao.save(object);

2.update

dao.update(object);

3.delete

dao.delete(object);

只有新增的时候需要指定

object.getConfig().setProduct(object);

相关推荐