今天在公司的項目開發中,遇到一個問題:
后端對象實體類中寫入字段順序與數據庫中的存儲順序不一致。
仔細觀察到數據庫中的表字段的排序方式是按照拼音字母的順序abcdef......來存儲的
而我的實體類中的表結構順序卻不是這樣的
經過查閱資料,總結到了解決這個問題的方法:
一、在application.yml配置中添加數據庫根據實體類自動創建數據庫表的配置(這里數據庫采用MySQL數據庫)
二.實體類字段順序與數據庫不一致解決辦法
在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,即可完成
這時候在創建數據庫表結構時就是按照實體類的創建順序來了。