2017-07-05 21 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 ...