`
1028826685
  • 浏览: 938740 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类

JPA中的联合主键

阅读更多
来源 itcast

第一步:
照样先搭建环境导入JPA相应的实现产品如:hibernate toplink 的jar包 及数据库驱动

在classpath路径下配置META-INF 文件夹 下面文件 persistence.xml 一定要放在classpath路径下

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<!-- 以transaction-type下是 事务提交类型有两种事务:第一、本地事务(在同一个数据库中完成事务)  第二、全局事务(在不同数据库中需要在同一事务中完成不同数据库的操作)-->
<persistence-unit name="person" transaction-type="RESOURCE_LOCAL">
<properties>
<!-- 使用的方言 -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
<!-- 数据库驱动 -->
<property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver" />
<!-- 数据库用户名 -->
<property name="hibernate.connection.username" value="root" />
<!-- 数据库密码 -->
<property name="hibernate.connection.password" value="liyong" />
<!-- 数据库连接url -->
<property name="hibernate.connection.url"
value="jdbc:mysql://localhost:3306/student?useUnicode=true&amp;characterEncoding=UTF-8" />
<!-- 表结构发生变化的时候更新表结构 ,表不存在是创建表-->
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>

第二步:编写复合主键类


@Embeddable// @Embeddable只使用这个实体内的属性
/*
* 作为复合主键条件
* 1、必须使用这个注解@Embeddable
* 2、必须序列化
* 3、必须重写hashCode()和equels()方法
*/
public class AirLinePK implements Serializable{

private static final long serialVersionUID = 1L;
private String startCity;
private String endCity;

public AirLinePK(){}

public AirLinePK(String startCity, String endCity) {
super();
this.endCity = endCity;
this.startCity = startCity;
}
@Column(length=3)
public String getStartCity() {
return startCity;
}
public void setStartCity(String startCity) {
this.startCity = startCity;
}
@Column(length=3)
public String getEndCity() {
return endCity;
}
public void setEndCity(String endCity) {
this.endCity = endCity;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((endCity == null) ? 0 : endCity.hashCode());
result = prime * result
+ ((startCity == null) ? 0 : startCity.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
AirLinePK other = (AirLinePK) obj;
if (endCity == null) {
if (other.endCity != null)
return false;
} else if (!endCity.equals(other.endCity))
return false;
if (startCity == null) {
if (other.startCity != null)
return false;
} else if (!startCity.equals(other.startCity))
return false;
return true;
}


}

第三步 :编写关系对象映射类

@Entity
public class AirLine {

private String name;
private AirLinePK id;

public AirLine(){}

public AirLine(String name,String start,String end){
this.name=name;
this.id=new AirLinePK(start,end);
}

@Column(length=20)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@EmbeddedId//这是复合主键
public AirLinePK getId() {
return id;
}
public void setId(AirLinePK id) {
this.id = id;
}


}

第四步:编写单元测试

@Entity
public class AirLine {

private String name;
private AirLinePK id;

public AirLine(){}

public AirLine(String name,String start,String end){
this.name=name;
this.id=new AirLinePK(start,end);
}

@Column(length=20)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@EmbeddedId//这是复合主键
public AirLinePK getId() {
return id;
}
public void setId(AirLinePK id) {
this.id = id;
}


}

第五步:测试。。。。

代码见附件。。。。。。。。。

分享到:
评论

相关推荐

    JPA注解实现联合主键

    在JPA中,我们可以通过`@IdClass`和`@Id`注解来实现联合主键。下面将详细介绍如何通过这些注解来实现联合主键。 ### 创建复合主键类 首先,需要创建一个复合主键类来存储需要组成联合主键的属性。这个类需要实现`...

    15_传智播客JPA详解_JPA中的联合主键

    本教程将聚焦于JPA中的一个关键概念——联合主键(Composite Key),这是处理多字段主键的一种方式。 联合主键是指在数据库表中,由两个或多个字段共同构成的唯一标识,这些字段的组合必须是唯一的。在JPA中,我们...

    JPA_5_联合主键

    本篇文章将深入探讨JPA中的联合主键概念、实现方式以及其在实际应用中的使用场景。 ### JPA 基本概念 JPA 是一种Java规范,它提供了一种标准的方式来管理和持久化Java对象到关系数据库。通过使用JPA,开发者可以...

    JPA 联合主键

    本文将深入探讨JPA中的联合主键概念、实现方式以及实际应用。 ### 1. 联合主键的概念 联合主键是指在数据库表中,通过两个或多个字段的组合来共同构成主键,以确保数据的唯一性。这种设计模式常用于那些单个字段...

    JPA联合主键

    **JPA联合主键详解** 在Java Persistence API (JPA) 中,主键是用于唯一标识实体的关键字段。在很多情况下,一个实体的主键可能不是由单一字段组成,而是由两个或更多个字段共同构成,这样的主键就被称为联合主键...

    JPA详解视频教程 第15讲 JPA中的联合主键.avi

    JPA用于整合现有的ORM技术,可以简化现有Java EE和Java SE应用对象持久化的开发工作,实现ORM的统一。JPA详解视频教程 第15讲 JPA中的联合主键.avi

    15_JPA详解_JPA中的联合主键.zip

    在JPA中,**联合主键(Composite Key)** 是指由两个或多个属性共同构成的主键,这与单个属性的简单主键相对。联合主键通常用于那些通过多个字段来唯一标识实体的情况。在关系数据库中,联合主键确保了表中每行数据...

    JPA学习总结(五)--JPACompositePK联合主键

    在JPA中,我们可以使用`@IdClass`或`@EmbeddedId`注解来实现联合主键。 1. **@IdClass**:这种方式需要创建一个单独的类来表示联合主键,这个类需要实现Serializable接口,并且每个主键字段都用@Id注解标识。然后在...

    Spring Data JPA 建立表的联合主键

    在 Spring Data JPA 中,建立表的联合主键是一种常见的需求,本文将详细介绍如何使用 Spring Data JPA 建立表的联合主键,并提供了两种实现方式。 首先,我们需要了解什么是联合主键。在关系数据库中,主键是用于...

    JPA主键策略(针对数据库自增字段重置后无效检查项)

    在JPA中,主键策略是指生成主键的机制,用于标识数据库表中的每一行记录。在本文中,我们将详细讨论JPA主键策略的类型、特点和应用场景。 GenerationType.IDENTITY GenerationType.IDENTITY 是一种常用的主键...

    使用@IdClass创建联合主键,并实现外部关联

    在 Java Persistence API(JPA)中,联合主键是指由多个字段组成的主键,可以使用@IdClass注解来实现。在本文中,我们将介绍如何使用@IdClass创建联合主键,并实现外部关联。 首先,我们需要创建三个实体类:...

    java hibernate使用注解来定义联合主键

    在Java Hibernate框架中,联合主键(Composite Key)是指由两个或多个属性共同构成的主键,这在处理一些特定的数据模型时非常有用。本文将详细介绍如何使用Hibernate注解来定义联合主键。 首先,我们需要了解联合...

    传智播客JPA学习笔记.pdf

    JPA中的联合主键** 联合主键使用@EmbeddedId和@Embeddable注解,将多个字段组合成一个复合主键,适用于那些不满足单一主键条件的表。 以上就是JPA学习笔记中的关键知识点,涵盖了JPA的基本概念、环境配置、对象...

    JPA学习文档笔记

    - 通常情况下,还需要指定外键字段(`mappedBy`)或者联合主键(`@PrimaryKeyJoinColumn`)来明确关联关系。 - **一对多关联**: - 使用`@OneToMany`注解表示一对多关系,通常还需要使用`@JoinColumn`或`@JoinTable`来...

    JPA讲解视频

    2. **实体ID(Entity ID)**:每个实体都有一个唯一的标识符,通常由`@Id`注解标记的字段表示,相当于数据库中的主键。 3. **持久化上下文(Persistence Context)**:JPA管理的对象状态,分为瞬时态、持久态和脱管...

    自己整理的JPA帮助文档

    联合主键(Composite Key)** - 当主键由两个或更多个字段组成时,可以使用`@IdClass`或`@EmbeddedId`来定义。 **7. 异步和缓存** - **异步处理**: 可以结合Java的ExecutorService或Spring的AsyncConfigurer进行...

    JPA标签(注解)详细说明

    - 在JPA中,实体类可以继承,通过`@Inheritance`注解可以定义继承策略,如单表继承(SINGLE_TABLE)、联合继承(JOINED)和子类表继承(TABLE_PER_CLASS)。 以上就是JPA中常用的一些注解及其功能,它们极大地简化...

    传智播客JPA学习笔记修改免积分版

    #### 十、JPA联合主键 - **概念介绍**: - 联合主键是指使用多个字段共同组成一个复合主键。 - **应用场景**: - 当单个字段不足以唯一标识一条记录时,可以考虑使用联合主键。 - **实现方式**: - 通过在实体类上...

    jpa学习总结,pdf类型的,详细介绍了jpa的应用

    - **定义与实现**:解释联合主键的概念,并展示其在JPA中的实现方式。 通过以上知识点的梳理,我们可以看出JPA不仅是一种强大的持久层框架,还具有高度的灵活性和扩展性,能够满足不同场景下的需求。同时,由于其...

Global site tag (gtag.js) - Google Analytics