码迷,mamicode.com
首页 > Web开发 > 详细

Hibernate建立多对一的单向关联关系

时间:2015-07-22 00:07:56      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:hibernate   many-to-one   not null   

以下内容整理自《精通Hibernate》第二版

映射代码:

<span style="font-size:18px;"><many-to-one
        name="customer"
        column="CUSTOMER_ID"
        class="mypack.Customer"
        not-null="true"
        lazy="false"
/></span>

<many-to-one>元素建立了customer属性和ORDERS表的外键CUSTOMER_ID之间的映射。它包括以下属性。
 
name:设定待映射的持久化类的属性的名字,此处为Order类的customer属性。
column:设定和持久化类的属性对应的表的外键,此处为ORDERS表的外键CUSTOMER_ID。
class:设定待映射的持久化类的属性的类型,此处设定customer属性为Customer类型。
not-null:如果为true,表示customer属性不允许为null,该属性的默认值为false。not-null属性会影响hbm2ddl工具生成的数据库schema,hbm2ddl工具会为ORDERS表的CUSTOMER_ID外键设置not null约束,但not-null属性不会影响hbm2java工具生成Java源代码。此外,not-null属性还会影响Hibernate的运行时行为,Hibernate在向数据库中保存Order对象时,会先检查它的customer属性是否为null。
lazy:如果为proxy,表示对关联的Customer对象使用延迟检索策略并且使用代理,这是默认值。如果为false,就意味着当Hibernate从数据库中加载Order对象时,还会立即自动加载与它关联的Customer对象

注:当Hibernate持久化一个临时对象(指刚通过new语句创建),在默认情况下,它不会自动持久化所关联的其他临时对象,所以会抛出TransientObjectException异常。如果希望当Hibernate持久化一个临时对象时自动持久化所关联的临时对象,可以把<many-to-one>的cascade属性设为"save-update",cascade属性的默认值为"none"。
当cascade属性为"save-update",表明保存或更新当前对象时(即执行insert或update语句时),会级联保存或更新与它关联的对象。

Hibernate建立多对一的单向关联关系

标签:hibernate   many-to-one   not null   

原文地址:http://blog.csdn.net/nangongyanya/article/details/46992637

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!