关于解决SpringDataJpa框架实体类表字段创建顺序与数据库表字段展示顺序不一致的问题

今天在公司的项目开发中,遇到一个问题:

后端对象实体类中写入字段顺序与数据库中的存储顺序不一致。

仔细观察到数据库中的表字段的排序方式是按照拼音字母的顺序abcdef......来存储的

而我的实体类中的表结构顺序却不是这样的

经过查阅资料,总结到了解决这个问题的方法:

一、在application.yml配置中添加数据库根据实体类自动创建数据库表的配置(这里数据库采用MySQL数据库)

关于解决SpringDataJpa框架实体类表字段创建顺序与数据库表字段展示顺序不一致的问题

二.实体类字段顺序与数据库不一致解决办法

在org.hibernate.cfg包下的PropertyContainer类在取fields的时候是使用TreeMap来保存的,

以下是TreeMap的基本介绍

public class TreeMap<K,V>
extends AbstractMap<K,V>
implements NavigableMap<K,V>, Cloneable, Serializable

TreeMap中的元素默认按照keys的自然排序排列。

对Integer来说,其自然排序就是数字的升序;对String来说,其自然排序就是按照字母表排序

所以猜测是TreeMap的原因导致数据库表字段没有按照实体类设计而来

在项目结构中新建一个与之前相同名的文件,修改TreeMap为HashMap,即可完成

关于解决SpringDataJpa框架实体类表字段创建顺序与数据库表字段展示顺序不一致的问题

这时候在创建数据库表结构时就是按照实体类的创建顺序来了。

上一篇:Oracle更新表字段时内容中含有特殊字符&的解决方法


下一篇:redis配置文件redis.conf翻译、解释以及常用注意事项(持续更新中...)