SpringDataJpa实体类中属性顺序与数据库中生成字段顺序不一致的问题
于是就一步步跟踪下去,终于在一个地方发现了一个问题:org.hibernate.cfg包下的PropertyContainer类在取fields的时候是使用TreeMap来保存的,于是试着改了下,将这个里面的所有TreeMap改成了LinkedHashMap,编译通过,打包,测试。翻了翻源码发现,很多地方都是使用LinkedHashMap或者是List来传输Entity里面的fields,于是感觉
自己写的代码覆盖hibernate中的代码
翻了翻源码发现,很多地方都是使用LinkedHashMap或者是List来传输Entity里面的fields,于是感觉Hibernate应该是考虑到使用Entity里面定义的fields的顺序来实现建表语句里的表字段顺序的。
于是就一步步跟踪下去,终于在一个地方发现了一个问题:org.hibernate.cfg包下的PropertyContainer类在取fields的时候是使用TreeMap来保存的,于是试着改了下,将这个里面的所有TreeMap改成了LinkedHashMap,编译通过,打包,测试。
终于,我们期待已久的结果出来了:建表语句里面的字段顺序和Entity里面的fields的顺序一致了。

在自己的项目中新建一个
org.hibernate.cfg的包
新建类PropertyContainer。
根据原理,如果用户自定义的类与Jar中同名,会优先使用 用户自定义的类。这样就可以覆盖原来的Hibernate的行为

有的版本,是替换4个地方
将TreeMap替换为 LinkedHashMap
重新编译之后,数据库中的字段顺序就与实体类的顺序一样
这样处理的之后,尤其在Excel数据导入的时候,会非常的方便核对数据。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)