运行本机查询时发生ConverterNotFoundException

时间:2019-04-18 07:51:38

标签: java hibernate spring-boot spring-data-jpa

在我的应用程序中,我在@Repository类中具有以下功能:

@Query(value="SELECT roster_date FROM timetable", nativeQuery=true)
List<LocalDate> getAllDates();

执行上述查询时,我遇到了以下ConverterNotFoundException

org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.util.ArrayList<?>] to type [@org.springframework.data.jpa.repository.Query java.util.List<java.time.LocalDate>] 
for value '[2019-04-19 00:00:00.0, 2019-04-21 00:00:00.0]'; 
nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.sql.Timestamp] to type [@org.springframework.data.jpa.repository.Query java.time.LocalDate]

我试图按以下方法注册自定义转换器,但效果不佳。

@Component
public class SqlTimestampToLocalDateConverter implements Converter<Timestamp, LocalDate> {
    @Override
    public LocalDate convert(Timestamp source) {
        return source.toLocalDateTime().toLocalDate();
    }
}

如果我使用自己的findById类来调用@Entity来获取一条单记录,该类包含LocalDate列的roster_date属性,那么它可以正常工作。

如果有人能指出我正确的方向,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您已经有一个实体类,则可以改用它,我想您的实体类名为Time:

@Query("select t.rosterDate from Time t")

如果您已经拥有实体类,则可以使用JPQL。