在JPA配置关系时一定要注意:
谁配置了mappedBy谁就是关系被维护端,另一个是关系维护端(关系维护端一般配置@JoinColumn表示外键和optional表示外键是否可以为NULL)。
关系护端即负责外键记录的更新,一方为被维护端即没有权力更新外键记录。
@Entity
public class IDCard {
private Integer car_id;
private String car_no;
private Person person;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Integer getCar_id() {
return car_id;
}
public void setCar_id(Integer car_id) {
this.car_id = car_id;
}
@Column(nullable=false)
public String getCar_no() {
return car_no;
}
public void setCar_no(String car_no) {
this.car_no = car_no;
}
@OneToOne(cascade={CascadeType.MERGE,CascadeType.REFRESH},mappedBy="idCard")
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
@Entity
public class Person {
private Integer per_Id;
private String per_name;
private IDCard idCard;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Integer getPer_Id() {
return per_Id;
}
public void setPer_Id(Integer per_Id) {
this.per_Id = per_Id;
}
@Column(nullable = false)
public String getPer_name() {
return per_name;
}
public void setPer_name(String per_name) {
this.per_name = per_name;
}
@OneToOne(optional=false,cascade={CascadeType.ALL})
@JoinColumn(name="car_id")
public IDCard getIdCard() {
return idCard;
}
public void setIdCard(IDCard idCard) {
this.idCard = idCard;
}
}
测试:
public class JPA_oneToOneTest extends TestCase {
public void testJPAOneToOne() throws Exception {
EntityManagerFactory factory = Persistence
.createEntityManagerFactory("mengya");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
Person p = new Person();
p.setPer_name("小博");
IDCard card = new IDCard();
card.setCar_no("421101256525");
p.setIdCard(card);
em.persist(p);
em.getTransaction().commit();
em.close();
factory.close();
}
}
分享到:
相关推荐
本实例将详细探讨JPA中的一对一(OneToOne)关系配置,以及如何在实际项目中实现。 一对一关系在数据库设计中意味着两个实体之间存在一个实体对应另一个实体的唯一关系。例如,一个人可能只有一个护照,或者一个...
JPA中双向一对多实体Bean的属性配置,包括延迟加载,级联删除等
2. **实体管理工厂(EntityManagerFactory)**: 这是创建和配置JPA的入口点,通过它我们可以获取到`EntityManager`实例。一般在应用启动时创建,然后在整个应用生命周期内复用。 3. **实体管理器(EntityManager)*...
**JPA一对多双向配置实例详解** 在Java Persistence API (JPA)中,"一对多"关系是数据库中常见的关联类型,它表示一个实体(如用户)可以与多个其他实体(如订单)相关联。本实例将深入探讨如何在JPA中配置一对多的...
**JPA文档**通常会详细讲解这些概念,包括如何配置JPA,如何创建和使用实体,如何执行查询,以及如何处理关联(如一对一、一对多、多对多)等。快速入门JPA的步骤可能包括安装和配置JPA供应商(如Hibernate、Eclipse...
本篇将深入探讨JPA中的一对一(OneToOne)、一对多(OneToMany)以及多对多(ManyToMany)关系映射。 ### 1. JPA 一对一(OneToOne)关系映射 **概念**:一对一关系意味着两个实体之间存在唯一的关联,一个实体...
下面我们将详细探讨如何将Spring与JPA整合,以及如何创建一个简单的实例。 首先,我们需要理解Spring和JPA的核心概念。Spring框架提供了一种依赖注入(Dependency Injection)的机制,使得代码更加灵活和可测试。而...
本实例探讨的是如何在Spring环境中整合Spring MVC、Spring Data JPA以及使用Freemarker或JSON作为多视图配置。让我们深入理解这些技术及其相互作用。 首先,Spring MVC是Spring框架的一部分,专门用于构建Web应用...
此外,Spring Data JPA还集成了Hibernate验证,可以对实体属性进行约束,比如`@NotNull`, `@Size`, `@Email`等,这些验证规则在保存或更新实体时会自动检查。 在实际开发中,我们还需要考虑异常处理,如`...
Spring Data JPA是Spring的一个模块,它提供了对JPA的高级抽象,使得我们可以很容易地实现CRUD操作和复杂查询。 在项目结构中,创建一个名为`persistence.xml`的文件,这是JPA的配置文件,位于`src/main/resources/...
- **一对一(OneToOne)**: 两个实体之间一对一的关系,例如用户和账户。 - **一对多(OneToMany)**: 一个实体对应多个实体,如部门与员工。 - **多对一(ManyToOne)**: 多个实体对应一个实体,如订单与客户。 ...
这个实例提供了如何在Spring环境中配置和使用JPA进行数据库操作的源代码。 【描述】提到的关键点是,此实例不包含运行所需的JAR文件,用户需要自己从互联网上下载相关依赖并添加到项目的LIB目录。这表明了在实际...
7. **关系映射**: JPA支持多种关系类型,如一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)和多对多(@ManyToMany)。通过`@JoinColumn`和`@JoinTable`注解可以指定关联表的细节。 8. **懒加载...
本压缩包文件"04_JPA详解_第一个JPA实例与JPA主键生成策略.zip"包含了关于如何在实际项目中运用JPA,以及理解JPA主键生成策略的详细教程。 ### JPA基础 1. **JPA简介**: JPA是Java EE的一部分,它提供了一套规范,...
关于实体关联关系,SpringDataJPA支持多种关联类型,如一对一、一对多、多对一和多对多。以一对多为例,我们可以在`User`实体中定义一个`Set`类型的`Role`属性,表示用户可以拥有多个角色: ```java @Entity public...
而`List<PersonEducation>`则表示Person实体与PersonEducation实体间的多对一关系,后者同样拥有自身的属性,如`university`、`major`等。通过这种方式,JPA支持复杂的数据关系映射,极大地简化了数据库操作的代码量...
Spring的核心特性包括依赖注入(DI)、面向切面编程(AOP)、事务管理以及大量的可扩展性组件,如Spring JDBC、Spring ORM(其中包括对JPA的支持)、Spring MVC等。 **3. Struts框架** Struts是基于MVC(Model-View...
Java Persistence API(JPA)是Java平台上的一个标准,用于管理关系数据库中的数据。它提供了一种面向对象的方式来处理数据库操作,使得开发人员可以使用...理解并掌握JPA的配置和使用是每个Java开发者必备的技能之一。
综上所述,“JPA多对多Demo”是一个全面展示多对多关联关系及其操作的实例。它涵盖了实体的配置、关联关系的建立、查询、持久化操作和事务管理等多个方面,对于理解JPA的多对多关联有很好的学习价值。通过这个示例,...