`

hibernate @JoinColumn

 
阅读更多

@OneToOne注释只能确定实体与实体的关系是一对一的关系,不能指定数据库表中的保存的关联字段。所以此时要结合@JoinColumn标记来指定保存实体关系的配置。 

@JoinColumn与本书上一章讲述的@Column注释类似,它的定义如下代码所示。 

@Target({METHOD, FIELD}) @Retention(RUNTIME) 

public @interface JoinColumn { 

String name() default ""; 

String referencedColumnName() default ""; 

boolean unique() default false; 

boolean nullable() default true; 

boolean insertable() default true; 

boolean updatable() default true; 

String columnDefinition() default ""; 

String table() default ""; 

} 

 

在使用@JoinColumn注释时,应注意以下几个问题。 

l         @JoinColumn与@Column标记一样,是用于注释表中的字段的。它的属性与@Column属性有很多相同之处,这里就不详细讲述。请读者参阅5.2.2小节中有关@Column属性的部分。 

l         @JoinColumn与@Column相区别的是:@JoinColumn注释的是保存表与表之间关系的字段,它要标注在实体属性上。而@Column标注的是表中不包含表关系的字段。 

l         与@Column标记一样,name属性是用来标识表中所对应的字段的名称。例如customer表中存在字段addr_id,标识的代码如下所示。 

@OneToOne 

@JoinColumn(name = "addr_id") 

public AddressEO getAddress() { 

         return address; 

} 

 

若此时,不设置name的值,则在默认情况下,name的取值遵循以下规则: 

name=关联表的名称+“_”+ 关联表主键的字段名 

例如,CustomerEO实体中,如果不指定name的值,默认将对应name=address_id;因为@JoinColumn注释在实体 AddressEO属性上,实体AddressEO对应的表名为“address”;表address的主键是“id”,所以此时对应的默认的字段名称为 “address_id”。 


提示:此规则只适用于与@OneToOne标记同时使用时。若与@ManyToOne或@ManyToMany标记同时使用时,将遵循其他的规则。 

l         默认情况下,关联的实体的主键一般是用来做外键的。但如果此时不想主键作为外键,则需要设置referencedColumnName属性。例如,将address表中增加一个字段“ref_id”,address表的建表SQL变为以下所示。 

CREATE TABLE address ( 

id int(20) NOT NULL auto_increment, 

ref_id int int(20) NOT NULL, 

province varchar(50) , 

city varchar(50) , 

postcode varchar(50) , 

detail varchar(50) , 

PRIMARY KEY (id) 

) 

 

此时,通过customer表中的“address_id”字段关联的是address表中的“ref_id”,而“ref_id”并不是address表中的主键,则实体中标注如代码下所示。 

@OneToOne 

@JoinColumn(name = "address_id",referencedColumnName="ref_id") 

public AddressEO getAddress() { 

         return address; 

} 

 


属性referencedColumnName标注的是所关联表中的字段名,若不指定则使用的所关联表的主键字段名作为外键。

l         JoinColumn标记不仅能够与@OneToOne使用,也可以@ManyToOne或@ManyToMany标记同时使用,它们所表示的含义不同,这些内容将在下文详细讲述。

分享到:
评论

相关推荐

    Hibernate 注解大全

    **标题:“Hibernate 注解大全”** 在Java世界中,Hibernate是一个非常流行的持久化框架,它极大地简化了数据库操作。本文将深入探讨Hibernate的注解,这些注解是ORM(对象关系映射)的重要组成部分,帮助开发者以...

    hibernate 关系注解

    Hibernate是一种流行的Java持久化框架,它允许开发人员将对象模型转换为关系数据库模型。在Hibernate中,关系注解用于在实体类中定义不同类型的数据库关系,如一对一、一对多、多对多等。以下是关于Hibernate关系...

    hibernate manytoone

    在Java的持久化框架Hibernate中,`ManyToOne`关系是一种常见的关联映射方式,它表示一个实体类("一"端)拥有对另一个实体类("多"端)的多个实例的引用。在这个例子中,我们关注的是如何在Hibernate中配置和使用`...

    hibernate各种常用关联关系的基本配置

    在Java的持久化框架Hibernate中,对象关系映射(ORM)是其核心功能之一,它允许开发者用面向对象的方式处理数据库操作。关联关系是ORM中关键的概念,它模拟了现实世界中的实体之间的联系。本篇文章将深入探讨...

    Hibernate关联映射-one to one单向外键关联

    在Java世界中,ORM(对象关系映射)框架如Hibernate极大地简化了数据库操作。本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一...

    Hibernate实体关联速查表

    **Hibernate实体关联速查表详解** Hibernate作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据库事务。本速查表旨在提供关于Hibernate实体...

    Hibernate关于注解的一对多,多对多,一对一

    在Java的持久化框架Hibernate中,注解是用于对象关系映射(ORM)的重要工具,它简化了传统XML配置的方式,使代码更加简洁、易读。本篇文章将深入探讨Hibernate中注解的一对多、多对多和一对一关系映射。 ### 一对多...

    Hibernate注释

    ### Hibernate注释详解:一对多关系管理 在Java开发领域,Hibernate作为一个强大的对象关系映射(ORM)框架,被广泛应用于数据库操作与实体类映射之中。本文将深入探讨Hibernate中一对多关系的处理方式,重点讲解`@...

    Hibernate双向一对一关联映射(注解版)

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作转换为面向对象的方式,从而提高开发效率。本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的...

    Hibernate表关系总结(一对一,多对一,多对多)

    在Java持久化框架Hibernate中,关系映射是数据库关系模型在对象模型中的体现,它允许我们将数据库的表间关系转换为对象间的关联。本文将深入探讨三种主要的关系映射类型:一对一(One-to-One)、多对一(Many-to-One...

    hibernate 一对一 多对多的关系

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作转换为面向对象的方式,从而简化了数据访问层的编程。本篇文章将深入探讨Hibernate中的一对一(OneToOne)和多对多...

    Hibernate 的多对一、一对多、多对多

    在Java的持久化框架Hibernate中,关系映射是数据库与对象模型之间的重要桥梁。本篇文章将深入探讨三种主要的关系映射类型:多对一(Many-to-One)、一对多(One-to-Many)以及多对多(Many-to-Many)。这些映射方式...

    hibernate one to one 映射到两种方式

    在Java的持久化框架Hibernate中,一对一(One-to-One)映射是一种常见关系映射,用于表示两个实体之间一对一的关联。本篇文章将详细探讨Hibernate中实现一对一映射的两种方式,并结合源码分析其原理。 一、主键外键...

    Hibernate学生-课程-成绩表的例子(many2many)

    在IT行业中,数据库管理和持久化框架是至关重要的技术领域,特别是在Java开发中,Hibernate作为一款优秀的对象关系映射(ORM)框架,极大地简化了数据库操作。在这个“Hibernate学生-课程-成绩表的例子(many2many)”...

    hibernate 关联例子

    在Java的持久化框架Hibernate中,关联映射是核心概念之一,它允许对象之间的关系在数据库层面得以体现。本文将详细解析四种基本的关联类型:一对一(OneToOne)、多对多(ManyToMany)、一对多(OneToMany)和多对一...

    hibernate表关联实例

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库操作。本教程将深入探讨Hibernate中的表关联实例,帮助初学者理解如何在实际...

    Hibernate 注解映射

    Hibernate 注解映射 Hibernate 注解映射是 Hibernate 框架中的一种映射方式,它使用 Java 注解来描述实体类和数据库表之间的映射关系,提高开发效率。 一、 环境搭建和基本映射 在使用 Hibernate 注解映射之前,...

    hibernate对象三状态及OneToOne&OneToMany&ManyToMany

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本篇将详细阐述Hibernate中的对象三状态、一对一(OneToOne)、一对多...

    如何使用Hibernate 双向 单-多 多-单 多-多 Hibernate.rar

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者通过面向对象的方式来操作数据库,简化了数据库操作的复杂性。本教程将深入探讨如何使用Hibernate实现多表之间的双向关联,包括单-多...

Global site tag (gtag.js) - Google Analytics