• sping data jpa 共享主键 OneTonOne 延时加载


    当我们使用spring boot创建项目时,系统默认使用的是如下parent。

     <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.6.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>

    可能不同时期版本不同,而spring boot的一大优势就是starter依赖,比如我们使用jpa就可以直接引用:

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>

    配置好数据库后,就可以使用jpa开发了,我们不用管版本的问题,但是当我们遇到OneToOne 共享主键的情况下,从表居然不能延时加载

    经过测试发现就是jpa中的hibernate的版本问题,

    jpa starter中使用的版本是:

    <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-core</artifactId>
          <version>5.3.10.Final</version>
          <scope>compile</scope>
          <exclusions>
            <exclusion>
              <artifactId>jboss-transaction-api_1.2_spec</artifactId>
              <groupId>org.jboss.spec.javax.transaction</groupId>
            </exclusion>
          </exclusions>
        </dependency>

    当我们使用较新版本时,问题得以解决:

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
                <exclusions>
                    <!-- 排除自带的logback依赖 -->
                    <exclusion>
                        <groupId>org.hibernate</groupId>
                        <artifactId>hibernate-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>5.4.3.Final</version>
            </dependency>

    主表配置如下:

        @OneToOne(fetch = FetchType.LAZY)
        @MapsId()
        @JoinColumn(name = "id")
        private PersonDetail personDetail;

    从表不用任何配置。

  • 相关阅读:
    C# 微信品牌会员卡开发(微信会员卡2.0)
    管理者问卷调查
    二:elementui源码解析之改造demoblock可以直接在卡片里编辑修改代码并生效渲染到界面上
    MySql 的@符号定义一个变量在sql里的占位符作用
    swift 代码段的重构
    k8skubeadm高可用安装部署
    LeetCode> 71. 简化路径
    Linux进程管理
    Linux中断下半部及推后执行的工作
    Linux进程调度
  • 原文地址:https://www.cnblogs.com/hankuikui/p/11167988.html
Copyright © 2020-2023  润新知