2017-07-05 23 views
1

我想存儲什麼樣的數據類型應該在Spring框架中使用的時間? 我使用的數據庫是MySQLSpring-Data-Rest中的時間的數據類型

@Entity 
public class ShopDetail { 

@Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Long id; 

    private String name; 

    private String address; 

    private Double latitude; 

    private Double longitude; 

    private float rating; 

    private Time openingTime; 

    private Time closingTime; 
    } 
+0

java.util.date或java.sql.date – fg78nc

+0

[@Temporal](http://docs.oracle.com/javaee/7/api/javax/persistence/Temporal.html)註釋用於指定當前註釋的java.util.Date或java.util.Calendar實體屬性的TemporalType。 –

回答

1

如果您使用的是Java 8中,大部分業務邏輯,實體領域可能是使用Instant - 基本類中java.time API用於表示在時間軸瞬間世界標準時間。

如果您需要時區數據,您可以考慮使用:

ZonedDateTime是一個日期,時間與時區的不變表示。這 類存儲所有日期和時間字段

另一種選擇LocalDateTime

一個日期,時間沒有在ISO-8601日曆系統的時區,這樣 如2007-12-03T10 :15:30

但是你會依賴一個默認的系統時區,如果系統時區會改變,這可能會帶來矛盾的結果。

檢查Java 8: What's the difference between Instant and LocalDateTime?Hibernate with Java 8 LocalDate & LocalDateTime in Database的明確說明。

0

您可以在實體使用Java 8時間類型。只需添加這依賴於你的項目:

<dependency> 
    <groupId>com.fasterxml.jackson.datatype</groupId> 
    <artifactId>jackson-datatype-jsr310</artifactId> 
</dependency> 

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-java8</artifactId> 
</dependency> 

根據這篇文章The 5 laws of API dates and times我建議在REST項目中使用ZonedDateTime

另外要注意這個topic ...