最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Data JPA自動生成表時列順序混亂的最新解決辦法

 更新時間:2024年11月28日 09:16:55   作者:程序猿DD  
文章主要介紹了Spring Boot 3.3.5版本中SpringDataJPA自動生成表時列順序混亂的問題,以及如何通過替換Hibernate實現(xiàn)來解決這個問題,感興趣的朋友跟隨小編一起看看吧

最近把Spring Boot的版本升級到了3.3.5,突然發(fā)現(xiàn)一個問題:當使用Spring Data JPA自動生成表的時候,所產(chǎn)生的列順序與Entity類中的變量順序不一致了。比如,有一個下面這樣的Entity:

@Data
@Entity(name = "t_config")
@EntityListeners(AuditingEntityListener.class)
public class Config {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(length = 20)
    private String itemKey;
    @Column(length = 200)
    private String itemValue;
    @Column(length = 200)
    private String itemDesc;
    @CreatedDate
    private Date createTime;
    @LastModifiedDate
    private Date modifyTime;
}

實際自動創(chuàng)建出來的是這樣的:

自動創(chuàng)建的表結(jié)構中各個列與Entity類中的變量順序不一致。其實該問題是一個老生常談的問題了,在DD這次升級的工程里是有做過解決方案的。只是升級了Spring Boot版本之后,之前的解決方案失效了。

搜索了一番,同時還問了一下AI,發(fā)現(xiàn)給出的方案還都是老的解決方案,所以今天特別寫一篇來記錄下新版本之下,要如何解決這個問題。如果您剛好遇到類似的問題,可以參考本文來解決。

老版本解決方案

新老版本的解決思路是類似的,都是替換Hibernate的實現(xiàn),下面是老版本的解決步驟:

  • 在工程中新建org.hibernate.cfg
  • 找到hibernate-core包下的org.hibernate.cfg下的PropertyContainer類,復制到本工程的org.hibernate.cfg包下
  • PropertyContainer類中定義的persistentAttributeMap類型從TreeMap修改為LinkedHashMap

新版本解決方案

雖然之前的方案失效了,但思路應該還是對的,所以第一反應是看看當前版本下的PropertyContainer類,具體如下(省略了一些不重要的內(nèi)容):

package org.hibernate.boot.model.internal;
//省略...
public class PropertyContainer {
    private static final CoreMessageLogger LOG = Logger.getMessageLogger(CoreMessageLogger.class, PropertyContainer.class.getName());
    /**
     * The class for which this container is created.
     */
    private final XClass xClass;
    private final XClass entityAtStake;
    /**
     * Holds the AccessType indicated for use at the class/container-level for cases where persistent attribute
     * did not specify.
     */
    private final AccessType classLevelAccessType;
    private final List<XProperty> persistentAttributes;
	//省略...
}

可以看到有兩個重要變化部分:

  • PropertyContainer類的包名從org.hibernate.cfg改到了org.hibernate.boot.model.internal
  • 之前的TreeMap<String XProperty> persistentAttributeMap變量沒有了,但多了一個List<XProperty> persistentAttributes。進一步觀察這個新變量的處理過程,可以看到如下邏輯:

所以,新版的方案就以下兩個步驟:

  • 在工程中新建org.hibernate.boot.model.internal
  • 找到hibernate-core包下的org.hibernate.boot.model.internal下的PropertyContainer類,復制到本工程的org.hibernate.boot.model.internal包下
  • PropertyContainer類中,上面圖中紅色圈出部門定義的localAttributeMap = new TreeMap<>();修改為localAttributeMap = new LinkedHashMap<>();

到這里,在新版本中的這個問題就解決了。如果你也遇到了類似的問題,希望本文對你有所幫助。

到此這篇關于Spring Data JPA自動生成表時列順序混亂的解決辦法最新版的文章就介紹到這了,更多相關Spring Data JPA自動生成表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Mybatis-Plus批量插入用法詳解

    Mybatis-Plus批量插入用法詳解

    mybatis-plus的IService接口默認提供saveBatch批量插入,也是唯一一個默認批量插入,在數(shù)據(jù)量不是很大的情況下可以直接使用,但這種是一條一條執(zhí)行的效率上會有一定的瓶頸,今天我們就來研究研究mybatis-plus中的批量插入
    2023-02-02
  • 基于SpringCloud手寫一個簡易版Sentinel

    基于SpringCloud手寫一個簡易版Sentinel

    SpringCloud Alibaba Sentinel是當前最為流行一種熔斷降級框架,簡單易用的方式可以快速幫助我們實現(xiàn)服務的限流和降級,保證服務的穩(wěn)定性。
    2021-05-05
  • Spring Boot 文件上傳原理解析

    Spring Boot 文件上傳原理解析

    Spring Boot 文件上傳原理其實就是Spring MVC,因為這部分工作是Spring MVC做的而不是Spring Boot,那么,SpringMVC又是怎么處理文件上傳這個過程的呢?下面通過本文給大家詳細介紹下,一起看看吧
    2018-03-03
  • Java實現(xiàn)控制小數(shù)精度的方法

    Java實現(xiàn)控制小數(shù)精度的方法

    這篇文章主要介紹了Java實現(xiàn)控制小數(shù)精度的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Java鎖之可重入鎖介紹

    Java鎖之可重入鎖介紹

    這篇文章主要介紹了Java鎖之可重入鎖介紹,可重入鎖,也叫做遞歸鎖,指的是同一線程外層函數(shù)獲得鎖之后,內(nèi)層遞歸函數(shù)仍然有獲取該鎖的代碼,但不受影響,需要的朋友可以參考下
    2014-11-11
  • JDBC連接Mysql的5種方式實例總結(jié)

    JDBC連接Mysql的5種方式實例總結(jié)

    JDBC是Java DataBase Connectivity技術的簡稱,是一種可用于執(zhí)行 SQL語句的Java API,下面這篇文章主要給大家介紹了關于JDBC連接Mysql的5種方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • springMVC中基于token防止表單重復提交方法

    springMVC中基于token防止表單重復提交方法

    本篇文章主要介紹了springMVC中基于token防止表單重復提交方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • mybatis3.3+struts2.3.24+mysql5.1.22開發(fā)環(huán)境搭建圖文教程

    mybatis3.3+struts2.3.24+mysql5.1.22開發(fā)環(huán)境搭建圖文教程

    這篇文章主要為大家詳細介紹了mybatis3.3+struts2.3.24+mysql5.1.22開發(fā)環(huán)境搭建圖文教程,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Java實現(xiàn)PDF文件添加文字圖片和圖片水印的實戰(zhàn)指南

    Java實現(xiàn)PDF文件添加文字圖片和圖片水印的實戰(zhàn)指南

    在日常開發(fā)中,PDF 加水印是非常常見的需求,比如文件脫敏、版權標識等場景,本文將基于 iTextPDF 庫實現(xiàn) PDF 文件的文字水印和圖片水印添加,需要的朋友可以參考下
    2026-02-02
  • 簡要分析Java的Hibernate框架中的自定義類型

    簡要分析Java的Hibernate框架中的自定義類型

    這篇文章主要介紹了Java的Hibernate框架中的自定義類型,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2016-01-01

最新評論

桃园县| 信丰县| 闽清县| 福泉市| 莫力| 嘉鱼县| 密云县| 南澳县| 余庆县| 呼玛县| 桑植县| 绥德县| 正蓝旗| 汉源县| 略阳县| 凉城县| 南昌市| 张家界市| 卓资县| 依兰县| 崇明县| 宜春市| 天门市| 游戏| 夏邑县| 炉霍县| 万宁市| 曲靖市| 利川市| 富锦市| 甘谷县| 龙里县| 福安市| 梁山县| 手游| 锡林郭勒盟| 亳州市| 本溪| 乡城县| 广丰县| 芦山县|