hibernate对应关系配置

--------------------------------以下是单向关联-----------------------------------------------------------------------------------

一,多对一。

/**表结构**/

table person(

         personID varchar2(32) not null primarykey,

         addressID varchar2(32) not null

)

table address(

         addressID varchar2(32) not null primarykey

)

person.hbm.xml:

<class name="Person" table="person">

         <id>

                    <generator class="native"/><!-- native表示根据本地数据库自动生成主键-->

                    <!--<generator class="uuid" />    uuid表示根据uuid生成主键-->

         </id>

         <many-to-one  name="address"  column="addressID"  not-null="true"  lazy="false"/>

</class>

二,一对一。

/**表结构**/

table person(

         personID varchar2(32) not null primarykey,

         addressID varchar2(32) not null unique

)

table address(

         addressID varchar2(32) not null primarykey

)

person.hbm.xml:再多对一的基础上加唯一约束。

<class name="Person" table="person">

         <id name="personId" column="personID">

                    <generator class="native"/>

         </id>

         <many-to-one  name="address"  column="addressID" unique="true" not-null="true" lazy="false"/>

</class>

address.hbm.xml:

<class name="Address" table="address">

         <id  name="addressId" column="addressID">

                    <generator class="native"/>

         </id>

</class>

三,一对多

table address (

         addressId varchar2(32) not null primary key 

)
table person(

         personId varchar2(32)not null primary key,

         addressId varchar2(32)not null

)

<class name="Address " table="address">
           <id name="id" column="addressId">
                      <generator class="native"/>
           </id>
           <set name="persons"><!--也可以使用list不过鉴于list与set特点使用gset好一些-->
                       <key column="addressId" not-null="true"/>
                       <one-to-many class="Person"/>
          </set>
</class>

<class name="Person" table="person">
          <id name="id" column="personId">
                       <generator class="native"/>
          </id>
</class>

 ---------------------------------------------

 联合主键,多对一。

create table A_AGENT_EQU(
  agent_id VARCHAR2(32) not null,//agent表主键
  equ_id   VARCHAR2(32) not null//equ表主键
)
 
<hibernate-mapping default-lazy="false" package="com.xinlong.sesip.sp.basic.entity">
<class name="AgentEqu" table="a_agent_equ">
<composite-id>  
            <key-many-to-one name="agentInfo" class="com.entity.AgentInfo">
                <column name="AGENT_ID" scale="0" />
            </key-many-to-one>
            <key-many-to-one name="equInfo" class="com.entity.EquInfo">
                <column name="EQU_ID" scale="0" />
            </key-many-to-one>
        </composite-id> 
</class>
</hibernate-mapping>

猜你喜欢

转载自lxlr123.iteye.com/blog/2178617
今日推荐