7.一对多映射关系
有T_One和T_Many两个表,他们是一对多的关系,注解范例如下
主Pojo
01.@Entity
02.@Table(name = "T_ONE")
03.public class One implements Serializable {
04.private static final long serialVersionUID = 1L;
05.@Id
06.@Column(name = "ONE_ID", nullable = false)
07.private String oneId;
08.@Column(name = "DESCRIPTION")
09.private String description;
10.@OneToMany(cascade = CascadeType.ALL, mappedBy = "oneId")//指向多的那方的pojo的关联外键字段
11.private Collection<Many> manyCollection;
子Pojo
01.@Entity
02.@Table(name = "T_MANY")
03.public class Many implements Serializable {
04.private static final long serialVersionUID = 1L;
05.@Id
06.@Column(name = "MANY_ID", nullable = false)
07.private String manyId;
08.@Column(name = "DESCRIPTION")
09.private String description;
10.
11.@JoinColumn(name = "ONE_ID", referencedColumnName = "ONE_ID")//设置对应数据表的列名和引用的数据表的列名
12.@ManyToOne//设置在“一方”pojo的外键字段上
13.private One oneId;
8.多对多映射关系
貌似多对多关系不需要设置级联,以前用hibernate的时候着实为多对多的级联头疼了一阵子,JPA的多对多还需要实际的尝试一下才能有所体会。
估计JPA的多对多也是可以转换成两个一对多的。
第一个Pojo
01.@Entity
02.@Table(name = "T_MANYA")
03.public class ManyA implements Serializable {
04.private static final long serialVersionUID = 1L;
05.@Id
06.@Column(name = "MANYA_ID", nullable = false)
07.private String manyaId;
08.@Column(name = "DESCRIPTION")
09.private String description;
10.@ManyToMany
11.@JoinTable(name = "TMANY1_TMANY2", joinColumns = {@JoinColumn(name = "MANYA_ID", referencedColumnName = "MANYA_ID")}, inverseJoinColumns = {@JoinColumn(name = "MANYB_ID", referencedColumnName = "MANYB_ID")})
12.private Collection<ManyB> manybIdCollection;
第二个Pojo
01.@Entity
02.@Table(name = "T_MANYB")
03.public class ManyB implements Serializable {
04.private static final long serialVersionUID = 1L;
05.@Id
06.@Column(name = "MANYB_ID", nullable = false)
07.private String manybId;
08.@Column(name = "DESCRIPTION")
09.private String description;
10.@ManyToMany(mappedBy = "manybIdCollection")
11.private Collection<ManyA> manyaIdCollection;
9.一对一映射关系
主Pojo
01.@Entity
02.@Table(name = "T_ONEA")
03.public class OneA implements Serializable {
04.private static final long serialVersionUID = 1L;
05.@Id
06.@Column(name = "ONEA_ID", nullable = false)
07.private String oneaId;
08.@Column(name = "DESCRIPTION")
09.private String description;
10.@OneToOne(cascade = CascadeType.ALL, mappedBy = "oneA")//主Pojo这方的设置比较简单,只要设置好级联和映射到从Pojo的外键就可以了。
11.private OneB oneB;
从Pojo
01.@Entity
02.@Table(name = "T_ONEB")
03.public class OneB implements Serializable {
04.private static final long serialVersionUID = 1L;
05.@Id
06.@Column(name = "ONEA_ID", nullable = false)
07.private String oneaId;
08.@Column(name = "DESCRIPTION")
09.private String description;
10.@JoinColumn(name = "ONEA_ID", referencedColumnName = "ONEA_ID", insertable = false, updatable = false)//设置从方指向主方的关联外键,这个ONEA_ID其实是表T_ONEA的主键
11.@OneToOne
12.private OneA oneA;
10 大字段
01.@Lob //对应Blob字段类型
02.@Column(name = "PHOTO")
03.private Serializable photo;
04.@Lob //对应Clob字段类型
05.@Column(name = "DESCRIPTION")
06.private String description;
11.瞬时字段
不需要与数据库映射的字段,在保存的时候不需要保存倒数据库
01.@Transient
02.private int tempValue;
03.
04.public int getTempValue(){
05.get tempValue;
06.}
07.
08.public void setTempValue(int value){
09.this.tempValue = value;
10.}
分享到:
相关推荐
在JPA中,POJO被用作实体类,这些实体类映射到数据库表,每个字段对应表中的列。 **1. JPA实体定义**: 创建一个JPA实体,你需要使用`@Entity`注解标记类,并且通常包含一个`@Id`注解的字段,表示主键。例如: ```...
JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 JPA支持XML和JDK5.0注解两种元数据的形式。 JPA的总体思想和现有Hibernate、TopLink、...
### JPA注解总结大全 Java Persistence API (JPA) 是一种用于管理关系数据库中的对象/关系映射的标准。本文将详细介绍与 JPA 相关的一些常用注解及其使用方法,帮助开发者更好地理解和掌握 JPA 的核心功能。 #### ...
JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 JPA支持XML和JDK5.0注解两种元数据的形式。 JPA的总体思想和现有Hibernate、TopLink、...
### JPA注解实现联合主键 在关系型数据库中,单个字段作为主键的情况较为常见,但在某些场景下,我们需要使用多个字段共同作为主键来唯一标识表中的每一条记录,这就是所谓的“联合主键”。而在Java持久化框架...
JPA注解详解 JPA(Java Persistence API)是Java企业版5(Java EE 5)的一部分,提供了一个对象关系映射方法,使得开发者可以使用声明方式定义如何将Java对象映射到关系数据库表。在JPA中,批注是一种使用元数据...
JPA 使用注解来定义实体类与数据库表之间的映射关系,本文将详细介绍 JPA 注解的使用。 一、@Table 注解 @Table 注解用于定义实体类对应的数据库表的名称、目录和模式等属性。元数据属性说明: * name:表名,...
而使用JPA,则可以将任何普通的Java POJO指定为JPA实体,即可以通过JPA持久性提供程序的服务将其非持久字段持久保存到关系数据库(既可以在Java EE EJB容器内部,也可以在独立的Java SE应用程序中的EJB容器外部)。...
本项目提供了完整的配置代码,并有详细注释,非常适合初学者了解和学习SpringMVC+JPA的注解开发方式,以及如何结合Maven进行项目管理。通过实践这个项目,你可以深入理解Web应用开发的流程,掌握这些技术的使用。
二、JPA注解 JPA提供了一些注解来描述实体 Bean 的持久化信息,例如: * @Entity:标注该类是一个实体Bean * @Table:标注该实体Bean对应的数据库表 * @Column:标注该实体Bean对应的数据库表中的列 * @Id:标注该...
JPA通过`EntityManager`和`EntityTransaction`接口与数据库交互,`@Entity`注解标记实体类,`@Table`指定对应数据库表,`@Id`定义主键,`@GeneratedValue`用于自动生成主键值。JPA支持多种数据类型转换,以及复杂的...
Hibernate之JPA注解
当我们将Hibernate与JPA的注解结合使用时,可以极大地简化数据库操作的代码。然而,在实际开发中,我们可能会遇到各种问题,如标题中提到的"persistence.Table.indexes()[Ljavax/persistence/Index;"异常。这个异常...
JPA(Java Persistence API)提供了多种注解来定义实体类与数据库表之间的映射关系。 @Table 注解 @Table 注解用于定义实体类对应的数据库表的 metadata。其主要属性包括: * name:表名,默认为类名 * catalog:...
Java Persistence API (JPA) 是Java中用于对象关系映射(ORM)的标准框架,它允许开发人员将Java类与数据库表进行映射,从而简化数据操作。在JPA中,`@Access`注解是用于指定实体属性访问策略的关键工具,它决定了...
在实际开发中,JPA已经发展了许多新特性,比如Spring Data JPA的Repository抽象,以及更现代的ORM框架如Hibernate,它们在注解使用和功能上可能会有所不同,但基础概念是相通的。学习并熟练掌握这些注解,将有助于...
Jpa注解的各种jpa注释详解
JPA(Java Persistence API)是Java平台标准版的一部分,用于在Java应用程序中...通过以上注解的详细介绍,可以更好地理解和运用JPA以及SpringBoot框架,从而在开发中快速梳理思路并实现数据持久化及相关业务逻辑处理。