很难弄清楚我是否遇到了错误或做了一些愚蠢的事情......
Spring Boot v2.0.0.M7、spring-data-jpa、spring-data-rest、MySQL
以下@Query
@Query("select DISTINCT item.statusCode from Item item")
public List<String> lookupStatusCodes();
on a PagingAndSortingRepository
正在扔一个
java.lang.IllegalArgumentException: Couldn't find PersistentEntity for type class java.lang.String!
at org.springframework.data.mapping.context.PersistentEntities.lambda$getRequiredPersistentEntity$2(PersistentEntities.java:78) ~[spring-data-commons-2.0.2.RELEASE.jar:2.0.2.RELEASE]
at java.util.Optional.orElseThrow(Unknown Source) ~[na:1.8.0_151]
at org.springframework.data.mapping.context.PersistentEntities.getRequiredPersistentEntity(PersistentEntities.java:77) ~[spring-data-commons-2.0.2.RELEASE.jar:2.0.2.RELEASE]
at org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler.wrap(PersistentEntityResourceAssembler.java:72) ~[spring-data-rest-webmvc-3.0.2.RELEASE.jar:3.0.2.RELEASE]
statusCode 是一个 varchar 并且Item
本身作为@Entity按预期工作,但尝试投影到字符串列表(或List<Object>
)以上失败。
如果重要的话,我故意不想退货Page<String>
这里(不需要分页,因为预期结果集很小)。
字符串不能直接映射。您将需要一个映射器对象。创建一个带有字符串字段的模型类 -
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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)