Spring Boot + Spring Data JPA + Дата и время Java 8 (JSR310)
В приложении Spring Boot + Spring Data JPA для поддержки API-интерфейсов JSR310java.time.*
нам необходимо зарегистрировать этотJsr310JpaConverters
вручную.
import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.data.jpa.convert.threeten.Jsr310JpaConverters; @EntityScan( basePackageClasses = {Application.class, Jsr310JpaConverters.class} ) @SpringBootApplication public class Application { //... }
P.S Tested with Spring Boot 1.5.1.RELEASE, Spring Data JPA 1.11.0.RELEASE
1. Полный пример
1.1 A model contains a java.time.LocalDate
field.
package com.example.model; import javax.persistence.*; import java.time.LocalDate; @Entity public class Customer { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CUST_SEQ") @SequenceGenerator(sequenceName = "customer_seq", allocationSize = 1, name = "CUST_SEQ") Long id; String name; @Column(name = "CREATED_DATE") LocalDate date; //...
1.2 @EntityScan
to scan and register Jsr310JpaConverters
like this :
package com.example; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.data.jpa.convert.threeten.Jsr310JpaConverters; import java.util.Arrays; //for jsr310 java 8 java.time.* @EntityScan( basePackageClasses = {Application.class, Jsr310JpaConverters.class} ) @SpringBootApplication public class Application { public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } @Bean public CommandLineRunner run(ApplicationContext appContext) { return args -> { System.out.println("hello World!"); }; } }