Spring boot Spring数据JPA无法找到列表

Spring boot Spring数据JPA无法找到列表,spring-boot,spring-data-jpa,Spring Boot,Spring Data Jpa,很难弄清楚我是不是碰到了一个bug或者做了什么蠢事 Spring Boot v2.0.0.M7,Spring数据jpa,Spring数据rest,MySQL 下面的@Query @Query("select DISTINCT item.statusCode from Item item") public List<String> lookupStatusCodes(); statusCode是一个varchar,项本身作为@实体按预期工作,但尝试投影到字符串列表或列表失败,如上所述

很难弄清楚我是不是碰到了一个bug或者做了什么蠢事

Spring Boot v2.0.0.M7,Spring数据jpa,Spring数据rest,MySQL

下面的@Query

@Query("select DISTINCT item.statusCode from Item item")
public List<String> lookupStatusCodes();
statusCode是一个varchar,项本身作为@实体按预期工作,但尝试投影到字符串列表或列表失败,如上所述


如果重要的话,我故意不想在这里返回页面,因为预期的结果集很小,所以不需要分页。

无法直接映射字符串。您将需要一个映射器对象。创建带有字符串字段的模型类-

package org.xyz.model;

import java.io.Serializable;

public class StringResult implements Serializable {

    private static final long serialVersionUID = 1L;
    private String result;

    public StringResult(
        String result) {
        super();
        this.result = result;
    }

    public String getResult() {
        return result;
    }
}
然后将查询更改为使用模型类-

@Query("select new org.xyz.model.StringResult(DISTINCT item.statusCode as result) from Item item")
public List<StringResult> lookupStatusCodes();

您无法获取列表您只能从repository获取列表我不相信这是真的-Spring数据示例包括从存储库查询返回正确的投影。但在你的问题或代码中,你没有提到任何与使用投影相关的东西。我没有使用投影——我只是说回购协议不限于返回t类型,我就是这么看你的评论的。见我下面的评论,预测也不起作用though@jameygraham你找到什么了吗?我在Spring2之前用过这个,它很管用。我不能让它再工作了同样的例外:找不到PersistenceEntity。。。。我在[最新版本的文档]中找不到任何示例[当我调试Spring数据存储库代码时,它看起来无法再工作了。它在AbstractMappingContext的persistentEntities中寻找映射,但只有存储库的实体在那里。也许不再可能了?我理解你的推理,为什么你认为这会工作,我也认为它应该工作,但它实际上是g只为结果类和字符串生成相同的错误。实际上应该不需要包装字符串。稍微深入一点,看起来投影也不会产生相同的错误,所以开始感觉我只是遇到了一个错误。@jameygraham找到解决方案了吗?spring boot 2.0.3,spring data Love也有相同的解决方案花边-M3@jameygraham是的,对于不可映射的实体来说,它遇到了一个例外,显然,它不应该包含字符串。感觉像是Spring Boot中的一个bug,从2.0开始,它一直存在,并且在最新版本中没有修复。
@Query("select new org.xyz.model.StringResult(DISTINCT item.statusCode as result) from Item item")
public List<StringResult> lookupStatusCodes();