2017-03-25 1 views
0

나는 내 자바 클래스봄 부팅, 잭슨과 LOCALDATE

에서

compile('org.springframework.boot:spring-boot-starter-data-jpa') 
compile('org.springframework.boot:spring-boot-starter-data-rest') 
compile('org.springframework.boot:spring-boot-starter-web') 
compile 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310' 

을 내 application.properties 내 build.gradle에서

spring.jpa.generate-ddl=true 
spring.jackson.serialization.write-dates-as-timestamps=false 

을에 mysql을

봄 부트를 사용

가져 오기 java.time.LocalDate; 이 테이블이 생성됩니다

@Entity 
public class WebSite implements Serializable{ 

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

    private LocalDate date; 
    ... 
} 

,

날짜 필드가

왜이 잭슨에 문제가되지 않는 일

답변

1

없는 TINYBLOB처럼 만들었지 만 오히려 무엇이든 당신 ORM은 Java LocalDate를 MySQL 날짜로 변환하는 방법을 모릅니다.

두 가지 방법이 있습니다. 당신이 Hibernate를 사용한다면, 당신은 단순히 당신의 의존성에 org.hibernate:hibernate-java8을 포함시킬 것이다.

또는 JPA 만 사용하려면 속성 변환기를 만들어야합니다. 예 :

@Converter(autoApply = true) 
public class LocalDateAttributeConverter implements AttributeConverter<LocalDate, Date> { 

    @Override 
    public Date convertToDatabaseColumn(LocalDate locDate) { 
     return (locDate == null ? null : Date.valueOf(locDate)); 
    } 

    @Override 
    public LocalDate convertToEntityAttribute(Date sqlDate) { 
     return (sqlDate == null ? null : sqlDate.toLocalDate()); 
    } 
} 

속성 변환기는 Java LocalDate와 MySQL Date 간의 변환을 처리합니다.

참조 : http://www.thoughts-on-java.org/persist-localdate-localdatetime-jpa/