在Spring Boot + Spring Data JPA应用程序中,为了支持JSR310 java.time.*
API,我们需要手动注册此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 {
//...
}
PS已通过Spring Boot 1.5.1.RELEASE,Spring Data JPA 1.11.0.RELEASE测试
1.完整的例子
1.1模型包含一个java.time.LocalDate
字段。
package com.mkyong.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
扫描并注册Jsr310JpaConverters
如下所示:
package com.mkyong;
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!");
};
}
}
参考文献
翻译自: https://mkyong.com/spring-boot/spring-boot-spring-data-jpa-java-8-date-and-time-jsr310/