[英]org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type Model
[英]No converter found capable of converting from type [java.time.LocalDate] to type [@org.springframework.data.jpa.repository.Query java.lang.String]
我有一个带有 mysql 和 jpa 的 springboot 项目,在那里我有一个模型/域 class
class MyClass {
private long id;
private String name;
private LocalDate date;
private String data1;
private Integer data2;
}
我还有扩展 JpaRepository 的存储库接口,我想在其中添加自定义查询以按名称选择具有最新日期的行 - 代码如下:
interface MyClassRepository extends JpaRepository<MyClass, Long> {
@Query(value = "select m.name, max(date) from MyClass m group by m.name")
List<String> selectLatest();
}
当执行该查询的调用时,我收到标题中的错误消息
No converter found capable of converting from type [java.time.LocalDate] to type [@org.springframework.data.jpa.repository.Query java.lang.String]
我发现了类似的问题,但每个问题都比 class 更具体,比我的更复杂,我认为这是 java.util.LocalDate 这就是问题所在?
你 select 两列里面不是字符串。 您的消息返回一个Object[]
:
interface MyClassRepository extends JpaRepository<MyClass, Long> {
@Query(value = "select m.name, max(date) from MyClass m group by m.name")
List<Object[]> selectLatest();
}
其中索引 0 包含名称,索引 1 包含日期。
但对我来说,更好的解决方案是创建一个具有两个属性的 Object 和 select 这个:
public class MyLatestClass {
private String name;
private LocalDate date;
public MyLatestClass(String name, LocalDate date){
this.name=name;
this.date=date;
}
//getter
....
}
interface MyClassRepository extends JpaRepository<MyClass, Long> {
@Query(value = "select new MyLatestClass(name, max(date)) from MyClass m group by m.name")
List<MyLatestClass> selectLatest();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.