美文网首页Spring框架学习
ORM框架:SpringDataJPA 复合主键标签@IdCla

ORM框架:SpringDataJPA 复合主键标签@IdCla

作者: ___TheOne___ | 来源:发表于2018-08-12 15:29 被阅读12次

    1.前景

    JPA作为一种持久层框架的指导思想,对于数据库实体的复合主键,提到有两种方式可以实现:
    1>@IdClass标签的使用; 2> @EmbededId标签的使用。
    具体细节,可参照官方文档介绍:JPA Composite Primary Key---JPA复合主键

    2.项目中使用

    项目中有一个MerchantsProduct表,有两个字段:mid 和 productcode。这个两个字段一起,构成一个复合主键。
    同时这个实体结合SpringDataJPA的findAll分页使用,负责前端展示。
    最终决定选择使用@IdClass这种方式,更符合常规的方法。

    3.问题

    If you try to use findAll(Pageable)on a PagingAndSortingRepository you get an "java.lang.IllegalStateException: No supertype found" if the entity key is defined using @IdClass and you're using Hibernate 4.1.9

    具体解决方式:使用maven中排除依赖传递 pom.xml的<exclusions></exclusions>,将hibernate-core、hibernate-entitymanagement默认的4.1.8.Final版本,升高为4.2.9.Final版本,才得以解决java.lang.IllegalStateException: No supertype found异常。

    参考文章:
    1.Spring Data Jpa 复合主键 @IdClass使用
    2.JPA Composite Primary Key---JPA复合主键
    3.SpringDataJPA: Can't use pagination (Pageable) with @IdClass entities (spring-data-jpa 1.4.3 & Hibernate 4.1.9)
    4.maven中排除依赖传递 pom.xml的exclusions

    相关文章

      网友评论

        本文标题:ORM框架:SpringDataJPA 复合主键标签@IdCla

        本文链接:https://www.haomeiwen.com/subject/dqmsbftx.html