아무런 가공이 없는 LocalDateTime
의 응답 포맷은 배열이 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [ { "id" : 4 , "title" : "hello" , "dateCreated" : [ 2019 , 3 , 12 , 23 , 11 , 26 ], "dateUpdated" : [ 2019 , 3 , 12 , 23 , 11 , 26 ] } ]
따라서 포맷처리를 하려면 아래와 같이 하시면 됩니다.
의존성 추가 1 compile 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 package com.todo.api.domain;import com.fasterxml.jackson.annotation.JsonFormat;import lombok.Data;import org.hibernate.annotations.CreationTimestamp;import org.hibernate.annotations.UpdateTimestamp;import javax.persistence.*;import java.time.LocalDateTime;@Data @Entity public class Todo { @Id @GeneratedValue private Long id; @Lob @Column (nullable = false ) private String title; @JsonFormat (shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "Asia/Seoul" ) @CreationTimestamp private LocalDateTime dateCreated; @JsonFormat (shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "Asia/Seoul" ) @UpdateTimestamp private LocalDateTime dateUpdated; public Todo () { } public Todo (String title) { this .title = title; } }
포맷처리에 맞는 응답을 확인할 수 있습니다.
1 2 3 4 5 6 7 8 [ { "id" : 4 , "title" : "hello" , "dateCreated" : "2019-03-12 23:11:26" , "dateUpdated" : "2019-03-12 23:11:26" } ]
첨언 도메인 작성시 날짜를 저장하는 필드의 타입을 LocalDateTime
으로 할 경우 @Temporal
어노테이션을 사용할 수 없습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 package com.todo.api.domain;import lombok.Data;import org.hibernate.annotations.CreationTimestamp;import org.hibernate.annotations.UpdateTimestamp;import javax.persistence.*;import java.time.LocalDateTime;@Data @Entity public class Todo { @Id @GeneratedValue private Long id; @Lob @Column (nullable = false ) private String title; @Temporal (TemporalType.TIMESTAMP) @CreationTimestamp private LocalDateTime dateCreated; @Temporal (TemporalType.TIMESTAMP) @UpdateTimestamp private LocalDateTime dateUpdated; public Todo () { } public Todo (String title) { this .title = title; } }
@Temporal
어노테이션은 Date
또는 Calendar
에만 허용되기 때문입니다.
Caused by: org.hibernate.AnnotationException: @Temporal should only be set on a java.util.Date or java.util.Calendar property: com.todo.api.domain.Todo.dateCreated