在我的域类中,我有一个字段:
public class Reservation {
private LocalDateTime created = LocalDateTime.now();
在我的存储库中,我想只找到具有特定日期的保留(时间无关紧要):
public interface ReservationRepository extends Repository<Reservation, Long>, QuerydslPredicateExecutor<Reservation>, QuerydslBinderCustomizer<QReservation> {
bindings.bind(root.created).first((path, value) -> path.between(value.withMinute(0).withHour(0), value.withMinute(0).withHour(0).plusDays(1).minusSeconds(1)));
}
}
现在可以使用此网址:
/reservations?created=01/20/16 00:00 AM"
但我想使用这种数据时格式:
2016-01-20T00:00
我理解Spring引导使用RepositoryRestMvcConfiguration.class进行自动配置的问题。默认情况下,TemporalAccessorParser.class使用一些默认的DateTimeFormatter。我想把它改成
DateTimeFormatter ISO_LOCAL_DATE_TIME
答案 0 :(得分:1)
如果只有@DateTimeFormat
注释无效,请尝试向项目添加自定义Converter:
public class CustomStringToLocalDateTime implements Converter<String, LocalDateTime> {
@Override
public LocalDateTime convert(String source) {
return LocalDateTime.parse(source);
}
}
@Configuration
public class RepoRestConfig extends RepositoryRestConfigurerAdapter {
@Override
public void configureConversionService(ConfigurableConversionService conversionService) {
conversionService.addConverter(String.class, LocalDateTime.class, new CustomStringToLocalDateTime());
super.configureConversionService(conversionService);
}
}
这种方法适用于我的项目(除了我必须将日期('yyyy-MM-dd'
)的字符串表示转换为Instant
(yyyy-MM-ddThh:mm:ssZ
))。