1.单向一对一
@OneToMany(cascade = {CascadeType.ALL})
@JoinColumn(name = "...")
@JoinColumn注释的是保存表与表关系的字段.
2.双向一对一(1)
@OneToOne
@JoinColumn(name = "...")
@JoinColumn注释的是保存表与表关系的字段.
3.双向一对一(2)
@OneToOne(mapedBy = "...")
mappedBy属性来指明所映射的实体关系,它的值为所关联实体中该属性的名称.
4.单向一对多
@OneToMany
@JoinColumn(name = "...")
@JoinColumn注释的是保存表与表关系的字段.
5.双向一对多(一对多)
@OneToMany(mapedBy = "...")
@OrderBy("block,blockOrder") // 排序 前后,升序 (AbcLayoutmodule 内字段)
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "layout")
public List<AbcLayoutmodule> getLayoutmoduleList() {
return layoutmoduleList;
}
fatch: 可选择项包括:FetchType.EAGER 和FetchType.LAZY。前者表示关系类在主类加载的时候 同时加载;后者表示关系类在被访问时才加载,默认值是FetchType. LAZY。
cascade: CascadeType[]类型。该属性定义类和类之间的级联关系。定义的级联关系将被容器视为对当前类对象及其关联类对象采取相同的操作, * 而且这种关系是递归调用的。举个例子:Order 和OrderItem有级联关系,那么删除Order 时将同时删除它所对应的OrderItem对象。 * 而如果OrderItem还和其他的对象之间有级联关系,那么这样的操作会一直递归执行下去。
cascade的值只能从CascadeType.PERSIST(级联新建)、
CascadeType.REMOVE(级联删除)CascadeType.REFRESH(级联刷新)CascadeType.MERGE(级联更新)中选择一个或多个。
还有一个选择是使用CascadeType.ALL,表示选择全部四项。
mappedBy: 定义类之间的双向关系。如果类之间是单向关系,不需要提供定义,如果类和类之间形成双向关系,我们就需要使用这个属性进行定义, 否则可能引起数据一致性的问题。
mappedBy: 属性来指明所映射的实体关系,它的值为所关联实体中该属性的名称.
6.双向一对多(多对一)
@ManyToOne
@JoinColumn(name = "...")
@JoinColumn注释的是保存表与表关系的字段.
@JoinColumn(name = "LAYOUT_ID")
7.单向多对多
还没有遇到过.
8.双向多对多(1)
如客户(CustomerEO)实体与联系人(ContactEO)实体是双向多对多的关系.
则在客户(CustomerEO)实体类中这样配置:
@ManyToMany(targetManager = ContactEO.class, cascade = {CascadeType.ALL})
@JoinTable(name = "tb_customer_contact",
joinColumns = {
@JoinColumn(name = "cumtomer_id")
},
inverseJoinColumns = {
@JoinColumn(name = "contact_id")
})
@JoinTable用于注释关联的表.
joinColumns属性表示,在保存关系的表中,所保存关联关系的外键的字段,并配合@JoinColumn标记使用.
例如以下的映射配置,表示字段customer_id为外键关联到customer表中的id字段.
joinColumns = {
@JoinColumn(name = "cumtomer_id", referencedColumnName = "id")
},
inverseJoinColumns属性与joinColumns属性类似,它保存的是保存关系的另一个外键字段.
例如以下的映射配置,表示字段address_id为外键关联到address表中的id字段.
inverseJoinColumns = {
@JoinColumn(name = "contact_id", referencedColumnName = "id"))
}
@JoinColumn注释的是保存表与表关系的字段.
9.双向多对多(2)
在联系人(ContactEO)实体类中这样配置:
@ManyToMany(cascade = {CascadeType.ALL }, mappedBy = "contacts")
mappedBy属性来指明所映射的实体关系,它的值为所关联实体中该属性的名称.
10.枚举类型
@Enumerated(EnumType.STRING)
@Column(name = "POSITION")
public GroupPosition getPosition() { //GroupPosition 为枚举类
return position;
}
原文: http://hi.baidu.com/willrom/blog/item/775c243fd65cbcff54e723a7.html
分享到:
相关推荐
本文档主要介绍了EJB3.0中的JPA实体注解规范及其在Hibernate中的扩展用法。 #### 二、EJB3.0与JPA概念 EJB3.0(Enterprise JavaBeans 3.0)是Java EE的一个组成部分,它代表了EJB技术的一个重大转变。EJB3.0引入了...
生成JPA的实体,带annotation,包括@Entity,@Table(name=xx),@Id,@GeneratedValue,@Column(name=xx) 输出表和字段的comment,包含字段的类型长度 自动生成包名
在 JPA 中,使用 `@OneToOne` 注解来定义这种关系,并通过 `@JoinColumn` 注解指定关联字段。 **示例代码:** ```java @OneToOne @JoinColumn(name = "USER_ID") private UserEmail userEmail; ``` 在这个例子中...
通过分析提供的文件“JPA关系”,我们可以深入学习如何在代码中实现这些关系,包括实体的定义、注解的使用以及关联的查询方法。这将帮助我们更好地理解和掌握JPA在处理对象关系映射时的灵活性和实用性。
在Java Persistence API (JPA) 中,实体映射关系是数据库关系模型与Java对象模型之间的桥梁,用于在ORM(对象关系映射)框架下管理数据。JPA 提供了多种映射关系,使得开发者能够方便地处理不同类型的关联。下面我们...
**JPA(Java Persistence API)**是Java平台上用于管理关系数据库的对象关系映射(ORM)框架,它允许开发者使用Java对象来操作数据库,而无需编写SQL语句。别名转实体是JPA中的一个概念,它涉及到如何通过别名来查询...
**JPA实体关联(Hibernate实现)** Java Persistence API (JPA) 是Java平台上的一个标准,用于管理和持久化Java对象到关系数据库。它提供了一种面向对象的方式来操作数据,而Hibernate是JPA的一个流行实现。在JPA中,...
### JPA实体对象状态 #### 一、实体对象的状态分类 在Java Persistence API (JPA) 中,实体对象的状态管理是实现数据持久化的基础之一。根据实体对象与实体管理器(EntityManager)之间的交互关系,实体对象可以...
### JPA实体映射对时间字段的处理 在Java持久化框架中,JPA(Java Persistence API)是一种广泛采用的标准,用于管理关系型数据库中的对象/关系映射。本文将详细探讨在使用JPA进行实体映射时如何处理时间字段,并...
### Java Persistence API (JPA) 与 EJB 3.0 实体 Bean 注解详解 #### 一、JPA 概述与实体 Bean 的转变 Java Persistence API (JPA) 是 Java 社区规范 JSR-220 的一部分,旨在提供一种标准的方式来处理对象与关系...
- `@Entity`:这个注解标记一个Java类为一个JPA实体,意味着这个类的对象可以直接与数据库表对应。如果不加此注解,JPA会认为这个类是非持久化的。 2. **数据库模式属性**: - `@Table`:用于指定实体对应的...
JPA注解详解 JPA(Java Persistence API)是Java企业版5(Java EE 5)的一部分,提供了一个对象关系映射方法,使得开发者可以使用声明方式定义如何将Java对象映射到关系数据库表。在JPA中,批注是一种使用元数据...
这些类需要使用`@Entity`注解标识为JPA实体。 2. **关系映射**:在多对多关联中,我们通常需要一个关联表来存储两个主表的外键。在JPA中,可以使用`@ManyToMany`注解来声明这种关系。例如,在`Student`类中,我们...
在OpenJPA中,实体标识(Entity Identifier)的生成策略是数据持久化过程中不可或缺的一部分,因为确保实体的唯一性对于数据库的正确性和一致性至关重要。OpenJPA提供了四种不同的策略来生成实体标识,使得开发者...
此外,通过 `@ManyToOne` 和 `@OneToMany` 这样的关系映射注解,可以清晰地定义实体之间的关系,进一步简化了数据库操作。 综上所述,JPA 提供了一套丰富的批注系统,让开发者能够在保持代码简洁的同时实现复杂的...
它们通常带有`@Entity`注解,表明这个类是一个JPA实体。例如: ```java @Entity public class User { @Id private Long id; private String name; // getters and setters } ``` 这里的`User`类就是一个实体,`@...
JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 JPA支持XML和JDK5.0注解两种元数据的形式。 JPA的总体思想和现有Hibernate、TopLink、...
例如,`@Entity`注解标记一个类为JPA实体,`@Table`用来指定对应的数据库表名,`@Id`定义主键字段,`@GeneratedValue`用于自增主键,`@Column`则用于指定字段属性,如长度、是否可为空等。 JPA提供了丰富的API来...