来自查询的响应无法映射到 pojo 类 spring boot

Posted

技术标签:

【中文标题】来自查询的响应无法映射到 pojo 类 spring boot【英文标题】:Response from query couldn't map to pojo class spring boot 【发布时间】:2019-09-27 00:49:06 【问题描述】:

查询的每个响应都应该映射到一个 poja 类。

我写了一个原生查询

@Query(value="SELECT new QuestionJsonTotalAnswer(q.question) FROM mydb.question q", nativeQuery=true)
List<QuestionJsonTotalAnswer> showAnswersOfQuestions();

转换器类

public class QuestionJsonTotalAnswer 
    String question;
    // constructors, getters and setters

但错误是:

您的 SQL 语法有错误;检查手册 对应于您的 mysql 服务器版本,以便使用正确的语法 在第 1 行靠近 '(q.question) FROM mydb.question q'

在 application.properties 中

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

注意:当我通过List&lt;Object&gt; 得到响应时,它可以在没有 pojo 类的情况下正常工作。但是我需要通过 pojo 类来避免嵌套数组。

【问题讨论】:

尝试nativeQuery = false并在查询中输入QuestionJsonTotalAnswer的完整包名 @MortezaJalambadani 他出于某些原因使用本机查询,他在那里提到过 【参考方案1】:

你需要像这样使用投影。

@Query(value="SELECT q.question FROM mydb.question q", nativeQuery=true)
List<QuestionJsonTotalAnswer> showAnswersOfQuestions();

public interface QuestionJsonTotalAnswer 
    String getQuestion();
 

【讨论】:

以上是关于来自查询的响应无法映射到 pojo 类 spring boot的主要内容,如果未能解决你的问题,请参考以下文章

Spring RestTemplate 响应中从 JSON 到 Java/POJO 的自定义映射

mybatis系列笔记---输入输出映射

在 jpa 本机查询中选择特定列并映射到 pojo

mybatis_映射查询

Mybatis基础学习—映射文件

查询表格和映射到pojo的简便方法