如何在Spring Data Jpa中使用投影返回自定义对象?

4

我正在尝试从Spring Data JPA的本地查询中返回自定义对象。

根据这个 如何从Spring Data JPA GROUP BY查询返回自定义对象,我已经做了以下工作:

我应该能够创建这样的查询:

Query(nativeQuery = true, value = "select sc.case_type as caseType, sc.revision as revision from smart_casemodel sc minus select s.casetype, s.revision from smart_case s")
List<CtRevOnly> findNotUsedCasemodels();

我声明了投影接口。
public interface CtRevOnly {
    String getCaseType();
    String getRevision();
}

然后只需调用它。
caseModelRepository.findNotUsedCasemodels();

然而我遇到了一个异常

javax.persistence.PersistenceException: org.hibernate.MappingException: 未知实体: javax.persistence.Tuple

你有什么想法我做错了什么吗?


你需要将查询从SQL查询更改为JPQL查询,并将CtRevOnly更改为类而不是接口,请检查您所引用的链接中的答案。 - nsawaya
在JPQL部分下面的采纳答案中有一个关于本地查询(native query)的部分,这正是我感兴趣的。虽然可以用其他方法实现,但我很好奇本地查询和清晰的代码。我想使用投影来使其工作。虽然官方文档中没有提到,但由于“减号”不受支持,将其更改为JPQL会更困难。官方文档还使用了接口:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections - Martin Čuka
1个回答

2

对于遇到同样问题的人
我正在使用Hibernate 5.1.2.Final

我猜测这是一个bug,我需要升级到Hibernate 5.2.11才能使它正常工作 请查看此链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接