`
747017186
  • 浏览: 334119 次
社区版块
存档分类
最新评论

jpa怎么配置联合主键

 
阅读更多

如果一个表有多个主键,在jpa的注解里面应该是描述联合主键。

注意:一定要养成一个习惯,无论什么时候在新建立一个VO的时候,一定要给这个VO相应的空的构造方法。

1.建立一个主键类,这个类主要是描述联合主键里面所包含的的字段。

2.覆写这个类的equals和hashcode方法。

3.一定要序列化

package com.sysc.wenxuan.exam.model;

 

import java.io.Serializable;

 

import javax.persistence.Embeddable;

/**

 * 定义考试关系表的联合主键

 * @author Administrator

 *

 */

@Embeddable //注解这个类将会应用到联合主键

public class ExamPaperPK implements Serializable{

private static final long serialVersionUID = 1L;

private int examID;

private int resSubject;

public ExamPaperPK(){}

public int getExamID() {

return examID;

}

public void setExamID(int examID) {

this.examID = examID;

}

public int getResSubject() {

return resSubject;

}

public void setResSubject(int resSubject) {

this.resSubject = resSubject;

}

 

@Override

public boolean equals(Object obj) {

if(obj == null)

return false;

 

if (this == obj)

return true;

 

if(obj instanceof ExamPaperPK){

ExamPaperPK id = (ExamPaperPK)obj;

if(this.examID == id.getExamID() && this.resSubject == id.getResSubject())

return true;

}

return false;

}

 

@Override

public int hashCode() {

return (String.valueOf(examID)+String.valueOf(resSubject)).hashCode();

}

}

 

对应的表的VO的jpa注解:

package com.sysc.wenxuan.exam.model;

 

import java.sql.Timestamp;

 

import javax.persistence.AttributeOverride;

import javax.persistence.AttributeOverrides;

import javax.persistence.Column;

import javax.persistence.EmbeddedId;

import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.Table;

@Entity

@Table(name="eps_exam_paper")

public class ExamPaper {

private int paperID;

private int tplID;

private Timestamp examTime;

private String paperRowDef;

 

public ExamPaper(){

}

private ExamPaperPK pk;//声明一个联合主键类的变量

 

@EmbeddedId//注明,告诉数据库这个变量将是联合主键

@AttributeOverrides( {//分别定义联合主键里面的各个字段对应的是数据库里面那个字段

                                             其中name = "examID"是联合主键类里面的属性, column = @Column(name =                                                                     "EXAM_ID")是数据库表对应的字段

  @AttributeOverride(name = "examID", column = @Column(name = "EXAM_ID")),

  @AttributeOverride(name = "resSubject", column = @Column(name = "RES_SUBJECT")) })

public ExamPaperPK getPk() {

return pk;

}

 

public void setPk(ExamPaperPK pk) {

this.pk = pk;

}

@Column(name="PAPER_ID")

public int getPaperID() {

return paperID;

}

public void setPaperID(int paperID) {

this.paperID = paperID;

}

@Column(name="TPL_ID")

public int getTplID() {

return tplID;

}

public void setTplID(int tplID) {

this.tplID = tplID;

}

@Column(name="EXAM_TIME")

public Timestamp getExamTime() {

return examTime;

}

public void setExamTime(Timestamp examTime) {

this.examTime = examTime;

}

@Column(name="PAPER_ROW_DEF")

public String getPaperRowDef() {

return paperRowDef;

}

public void setPaperRowDef(String paperRowDef) {

this.paperRowDef = paperRowDef;

}

}

 

 

分享到:
评论

相关推荐

    JPA注解实现联合主键

    ### JPA注解实现联合主键 在关系型数据库中,单个字段作为主键的情况较为常见,但在某些场景下,我们需要使用多个字段共同作为主键来唯一标识表中的每一条记录,这就是所谓的“联合主键”。而在Java持久化框架...

    JPA_5_联合主键

    **JPA 联合主键详解** 在Java Persistence API(JPA)中,主键是用于唯一标识数据库表中每一行记录的关键字段。在某些情况下,一个实体可能需要多个字段来唯一标识其实例,这时就需要使用联合主键。本篇文章将深入...

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

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

    JPA中的联合主键

    在Java Persistence API (JPA) 中,联合主键(Composite Key)是指由两个或更多个字段共同组成的主键,这与单字段主键(Single Field Primary Key)相对。这种设计模式通常用于那些需要多个属性来唯一标识实体的情况...

    JPA 联合主键

    **JPA 联合主键详解** 在Java Persistence API(JPA)中,主键是用于唯一标识实体的关键字段。通常,一个实体可能只有一个主键字段,但有些情况下,为了实现唯一标识,可能需要使用两个或多个字段的组合,这就是...

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

    Spring Data JPA 建立表的联合主键

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

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

    ### 一、JPA 联合主键(Composite Key) 联合主键(Composite Key)是指由两个或更多个属性组成的主键,这些属性共同决定了实体的唯一性。在JPA中,我们可以使用`@IdClass`或`@EmbeddedId`注解来实现联合主键。 1....

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

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

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

    JPA主键策略详解 JPA(Java Persistence API)是一个Java标准,用于对象关系映射(ORM)。在JPA中,主键策略是指生成主键的机制,用于标识数据库表中的每一行记录。在本文中,我们将详细讨论JPA主键策略的类型、...

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

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

    传智播客JPA学习笔记.pdf

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

    JPA学习文档笔记

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

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

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

    自己整理的JPA帮助文档

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

    JPA讲解视频

    8. **继承映射(Inheritance Mapping)**:JPA支持单表继承、联合继承和表格分层等策略,使你可以设计复杂的对象模型。 9. **懒加载(Lazy Loading)**:默认情况下,JPA实现如Hibernate支持懒加载,即关联的对象只...

    jpa 全面学习资料

    - **环境配置**: 如设置persistence.xml文件,配置数据源、实体管理工厂等。 - **实体的创建与持久化**: 如`EntityManager`的`persist()`方法将对象保存到数据库。 - **查询操作**: 使用`find()`, `createQuery()`, ...

    学习hibernate必读,JPA2新特征和JPA2映射的神秘之旅。

    - **复合主键**:`@EmbeddedId`和`@IdClass`用于处理复杂的主键结构。 - **继承映射**:支持单表继承(Single Table Inheritance)、联合继承(Joined Table Inheritance)和表-per-class-hierarchy策略。 - **...

Global site tag (gtag.js) - Google Analytics