2016-02-19 121 views
1

Java 8提供java.time API。Grails將Java 8域對象的LocalDateTime映射到Gorm

我使用的是Grails應用程序,我想用java.time我的領域類的屬性。

我需要映射爲實例LocalDateTime對GORM的DATE/DATETIME這是基於Hibernate的頂部。

我怎樣才能堅持我的映射?

我看到一個解決方案,我可以使用jadira,建立靜態映射我attributs。

但是還有另一種方法嗎?

請任何幫助表示讚賞。

回答

0

可以使用user type映射。見the docs。這應該消除明確映射所有實例的需要。

要走得更遠,我會採取grails-joda-time插件源並嘗試製作jave.time版本。甚至嘗試製作(並提交拉取請求)版本,以支持joda-timejava.time

0

我沒有用過格姆,但如果我們只講休眠(我想這應該是適用的),你就可以遵循兩個路徑。

一,如果你正在使用或如果你能夠升級到休眠5,比你可以包括使用Java8特定數據類型的hibernate-java8

支持,如任何JSR 310 的域模型中的日期/時間類型。

否則,你將不得不爲解釋here編寫自己的類型,例如使用像

@Type(type="your.custom.LocalDateTimeUserType") 
private LocalDateTime date; 

最後,gorm正在實施JPA規範,可以實現converter

+0

我在grails 3.0.10上使用groovy,所以我不確定我是否可以將Hibernate更新到5,或者我錯了? – Ectoras

+0

對於第二種建議我的方法,它是通過Hibernate將域對象與sql對象進行實際映射,而不是通過Gorm。我將嘗試查看它是否適用 – Ectoras

+0

您可以在Grails 3.0.10上使用Hibernate 5。 你必須升級到GORM 5,然後選擇Hibernate 5來實現。有關更多信息,請參閱http://grails.github.io/grails-data-mapping/5.0.x/hibernate/manual/index.html。 –