必威体育Betway必威体育官网
当前位置:首页 > IT技术

Hibernate中many-to-one元素配置中的属性简介

时间:2019-07-14 05:41:12来源:IT技术作者:seo实验室小编阅读:81次「手机版」
 

toone

通过many-to-one 元素,可以定义一种常见的与另一个持久化类的关联。

这种关系模型是多对一关联(实际上是一个对象引用-译注):这个表的一个外键引用目标表的 主键字段。

<many-to-one

   name="propertyName"                                          (1)

   column="column_name"                                         (2)

   class="ClassName"                                            (3)

   cascade="cascade_style"                                      (4)

   fetch="join|select"                                          (5)

   update="true|false"                                          (6)

   insert="true|false"                                          (6)

   property-ref="propertyNameFromAssociatedClass"               (7)

   access="field|property|ClassName"                            (8)

   unique="true|false"                                          (9)

   not-null="true|false"                                        (10)

   optimistic-lock="true|false"                                 (11)

   lazy="true|proxy|false"                                      (12)

   not-found="ignore|exception"                                 (13)

   entity-name="EntityName"                                     (14)

   node="element-name|@attribute-name|element/@attribute|."

  embed-xml="true|false"

/>

(1)    name : 属性名。

(2)    column   (可选): 外间字段名。它也可以通过嵌套的  <column> 元素指定。

(3)    class   (可选 - 默认是通过反射得到属性类型): 关联的类的名字。

(4)    cascade(级联)   (可选): 指明哪些操作会从父对象级联到关联的对象。

(5)    fetch   (可选 - 默认为  select ): 在外连接抓取(outer-join fetching)和序列选择抓取(sequential select fetching)两者中选择其一。

(6)    update, insert   (可选 - defaults to  true ) 指定对应的字段是否包含在用于UPDATE   和/或  INSERT   的sql语句中。如果二者都是false ,则这是一个纯粹的 “外源性(derived)”关联,它的值是通过映射到同一个(或多个)字段的某些其他属性得到 或者通过trigger(触发器)、或其他程序

(7)    property-ref : (可选) 指定关联类的一个属性,这个属性将会和本外键相对应。 如果没有指定,会使用对方关联类的主键。

(8)    access   (可选 - 默认是  property ): Hibernate用来访问属性的策略。

(9)    unique   (可选): 使用DDL为外键字段生成一个唯一约束。此外, 这也可以用作property-ref 的目标属性。这使关联同时具有 一对一的效果。

(10)    not-null   (可选): 使用DDL为外键字段生成一个非空约束。

(11)    optimistic-lock   (可选 - 默认为  true ): 指定这个属性在做更新时是否需要获得乐观锁定(optimistic lock)。 换句话说,它决定这个属性发生脏数据时版本(version)的值是否增长。

(12)    lazy   (可选 - 默认为  proxy ): 默认情况下,单点关联是经过代理的。lazy="true" 指定此属性应该在实例变量第一次被访问时应该延迟抓取(fetche lazily)(需要运行时字节码的增强)。lazy="false" 指定此关联总是被预先抓取。

(13)    not-found   (可选 - 默认为  exception ): 指定外键引用的数据不存在时如何处理:  ignore 会将数据不存在作为关联到一个空对象(null)处理。

(14)    entity-name   (optional): 被关联的类的实体名。

cascade 属性设置为除了none 以外任何有意义的值, 它将把特定的操作传播到关联对象中。这个值就代表着hibernate基本操作的名称,  persist, merge, delete, save-update, evict, replicate, lock, refresh , 以及特别的值delete-orphan 和all ,并且可以用逗号分隔符 来合并这些操作,例如,cascade="persist,merge,evict" 或  cascade="all,delete-orphan" 。

一个典型的简单many-to-one 定义例子:

<many-to-one name="product" class="Product" column="PRODUCT_ID"/>

property-ref 属性只应该用来对付老旧的数据库系统, 可能有外键指向对方关联表的是个非主键字段(但是应该是一个惟一关键字)的情况下。 这是一种十分丑陋的关系模型。比如说,假设Product 类有一个惟一的序列号, 它并不是主键。(unique 属性控制Hibernate通过SchemaExport工具生成DDL的过程。)

<property name="serialNumber" unique="true" type="string" column="SERIAL_NUMBER"/>

那么关于orderItem   的映射可能是:

<many-to-one name="product" property-ref="serialNumber" column="PRODUCT_SERIAL_NUMBER"/>

当然,我们决不鼓励这种用法。

如果被引用的唯一主键由关联实体的多个属性组成,你应该在名称为<properties> 的元素 里面映射所有关联的属性。

相关阅读

Hibernate4.1之persist方法

public void persist(T entity) {   getSession().persist(entity);   }hibernate4.x的DAO基础类中的方法,在使用过程中遇到很

hibernate批量删除和更新数据

转载自:http://blog.csdn.net/yuhua3272004/article/details/2909538Hibernate3.0 采用新的基于ANTLR的HQL/SQL查询翻译器,在Hibern

Hibernate之Query接口的uniqueResult()方法

如果查询返回多个值用list()方法public void testQuery(){ Configuration config = new Configuration().configure(); Sessi

hibernate3 批量更新删除数据

Hibernate3.0 采用新的基于ANTLR的HQL/SQL查询翻译器,在Hibernate的配置文件中,hibernate.query.factory_class属性用来选择查询翻

hibernate uniqueResult方法

如果查询返回多个值用list()方法[java] view plaincopyprint?public void testQuery(){          Configuration c

分享到:

栏目导航

推荐阅读

热门阅读