Spring Data JPA 建立表的联合主键

 更新时间:2019年04月12日 14:10:03   作者:roseduan   我要评论

这篇文章主要介绍了Spring Data JPA 建立表的联合主键。本文详细的介绍了2种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

最近遇到了一个小的问题,就是怎么使用 Spring Data JPA 建立表的联合主键?然后探索出了下面的两种方式。

第一种方式:

第一种方式是直接在类属性上面的两个字段都加上 @Id 注解,就像下面这样,给 stuNo 和 stuName 这两个字段加上联合主键:

@Entity
@Table(name = "student")
public class Student {

  @Id
  @Column(name = "stu_no", nullable = false, length = 11)
  private Integer stuNo;

  @Id
  @Column(name = "stu_name", nullable = false, length = 128)
  private String stuName;

  @Column(name = "stu_age", nullable = false, length = 3)
  private Integer stuAge;

  @Column(name = "class_id", nullable = false, length = 8)
  private String classId;
}

只不过需要注意的是,实体类需要实现 Serializable 接口。

这种方式不是很好,虽然可以成功的创建表,但是使用 JpaRepository 的时候,需要指定主键 ID 的类型,这时候就会报错,所以使用第二种方式更好。

第二种方式:

实现起来也很简单,我们需要新建一个类,还是以 stuNo 和 stuName 建立联合主键,这个类需要实现 Serializable 接口。

public class StudentUPK implements Serializable {

  private Integer stuNo;

  private String stuName;

}

然后在实体类 Student 上面加上 @IdClass 注解,两个字段上面还是加上 @Id 注解:

@Entity
@IdClass(StudentUPK.class)
@Table(name = "student")
public class Student {

  @Id
  @Column(name = "stu_no", nullable = false, length = 11)
  private Integer stuNo;

  @Id
  @Column(name = "stu_name", nullable = false, length = 128)
  private String stuName;

  @Column(name = "stu_age", nullable = false, length = 3)
  private Integer stuAge;

  @Column(name = "class_id", nullable = false, length = 8)
  private String classId;
}

这样就能成功的创建表了,而且在使用 JpaRepoistory 的时候,可以指定主键为那个 StudentUPK 类,就像这样:public interface StudentRepository extends JpaRepository<Student, StudentUPK> 。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

相关文章

  • javaweb页面附件、图片下载及打开(实现方法)

    javaweb页面附件、图片下载及打开(实现方法)

    下面小编就为大家带来一篇javaweb页面附件、图片下载及打开(实现方法)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java并发编程之显式锁机制详解

    Java并发编程之显式锁机制详解

    这篇文章主要为大家详细介绍了Java并发编程之显式锁机制的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 详解Spring Cloud Feign 熔断配置的一些小坑

    详解Spring Cloud Feign 熔断配置的一些小坑

    这篇文章主要介绍了详解Spring Cloud Feign 熔断配置的一些小坑,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • spring boot集成pagehelper(两种方式)

    spring boot集成pagehelper(两种方式)

    这篇文章主要介绍了spring boot集成pagehelper(两种方式),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Java基础教程之继承详解

    Java基础教程之继承详解

    这篇文章主要介绍了Java基础教程之继承详解,继承是除组合(composition)之外,提高代码重复可用性(reusibility)的另一种重要方式,本文对继承做了详细讲解,需要的朋友可以参考下
    2014-08-08
  • Java Scanner 类的使用小结

    Java Scanner 类的使用小结

    在笔试编程过程中,关于数据的读取如果迷迷糊糊,那后来的编程即使想法很对,实现很好,也是徒劳,于是在这里认真总结了Java Scanner 类的使用,需要的朋友可以参考下
    2018-10-10
  • 布隆过滤器(Bloom Filter)的Java实现方法

    布隆过滤器(Bloom Filter)的Java实现方法

    下面小编就为大家带来一篇布隆过滤器(Bloom Filter)的Java实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • 基于JavaMail的常用类详细介绍

    基于JavaMail的常用类详细介绍

    以下是对JavaMail的常用类进行了详细分析的介绍,需要的朋友可以过来参考下
    2013-09-09
  • MapTask工作机制图文详解

    MapTask工作机制图文详解

    今天小编就为大家分享一篇关于MapTask工作机制图文详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • java实现二维数组转置的方法示例

    java实现二维数组转置的方法示例

    这篇文章主要介绍了java实现二维数组转置的方法,结合实例形式详细分析了java二维数组转置的原理、实现步骤与相关操作技巧,需要的朋友可以参考下
    2017-10-10

最新评论