簡體   English   中英

從hibernate-4遷移到hibernate-5時,java.util.Date格式的輸出更改

[英]java.util.Date format output changes when migrating from hibernate-4 to hibernate-5

我目前正在嘗試更新一些當前的庫,但是遇到了阻塞問題。 這是舊版應用程序,這是基本設置:

Java 8
Tomcat 7
Mysql 5.5.27-28.1-log Percona Server
Spring 4.2.4.RELEASE

相關的Hibernate版本在這里:

55:HIBERNATE_VERSION = "4.3.11.Final"
236:                "org.hibernate:hibernate-core:jar:#{HIBERNATE_VERSION}",
239:                "org.hibernate:hibernate-envers:jar:#{HIBERNATE_VERSION}",
241:                "org.hibernate:hibernate-entitymanager:jar:#{HIBERNATE_VERSION}",

更新的版本是:

HIBERNATE_VERSION = "5.2.12.Final"

我將為您保留細節,但是還有很多其他依賴項。 我逐漸消除了所有其他更改(包括相關的spring更新),但是上面列出的庫是僅有的3個正在更改的庫。

現在,由於日期格式已更改,其中一個前端客戶端令人窒息。

在hibernate-4下,它看起來像:

createdDate:“ 2014-09-15”,

經過上述更改,現在看起來像這樣:

創建日期:1410753600000,

類注釋看起來像這樣:

@Temporal(TemporalType.DATE)
@Column(columnDefinition="datetime")
private Date createdDate;

表模式在mysql上,其列出如下:

| createdDate | 日期時間| 是的 MUL | NULL | |

其中“日期”是java.util.Date。 是的,我知道java.util.Date太可怕了。 我也知道@Temporal落后於Java 8和新功能。 我們使用jodatime並希望對新的J8約定進行標准化,但這是一個舊應用程序,這是一個甚至更老的數據庫的中央表。

我嘗試了許多解決方案,包括:

  • 鞏固依賴
  • 隔離依賴關系(我們現在所在的位置)
  • 在全球范圍內實現@Converter(使用其他特定的日期格式)
  • 僅在字段上使用上述@Converter(仍在獲取紀元時間)
  • 使用輸出的json映射器設置字段(會中斷,因為每個時間/日期最終都具有該格式)
  • 將基本類型轉換為java.sql.Date(這就是Temporal所做的)。

通過檢查更改日志,我找不到任何可以解釋此特定更改的內容,更不用說任何默認行為會發生如此巨大更改的原因了。 我知道較大的遷移可以提供幫助,但是我實際上只是在尋找使用舊的默認行為的方法,這樣我就可以理清其余的升級,而不必將它們打包在主要的代碼/數據庫更改中。

這里有什么想法嗎? 我之前已經多次升級了休眠模式,卻從未遇到過像這樣的問題。

問題仍然是@Temporal在Hibernate-5和JPA 2.2之間@Temporal ,因此映射消失了。 我有一個偽造的DTO返回數據,並在該特定字段上強制使用了格式化程序,這似乎已經解決了該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM