zoukankan      html  css  js  c++  java
  • 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;

    从表不用任何配置。

  • 相关阅读:
    深入理解Auto Layout 第一弹
    Android UI测量、布局、绘制过程探究
    Android Measure 体系简单总结
    [译]Android view 测量布局和绘制的流程
    UI布局只关乎三件事情:尺寸、位置、组织
    ios 布局 素材 待整理
    NSAllowsArbitraryLoadsInWebContent NSAllowsArbitraryLoads
    UIStackView
    laravel 自定义常量方法
    laravel 增加不存在数据库的字段
  • 原文地址:https://www.cnblogs.com/hankuikui/p/11167988.html
Copyright © 2011-2022 走看看