【问题标题】:How to return custom object using projection in Spring Data Jpa?如何在 Spring Data Jpa 中使用投影返回自定义对象?
【发布时间】:2019-02-17 05:40:45
【问题描述】:

我正在尝试从 spring data jpa 返回自定义对象 - 本机查询

这是我到目前为止所做的事情 How to return a custom object from a Spring Data JPA GROUP BY query

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

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 成为一个类而不是一个接口,从您引用的链接中检查答案。
  • 在 JPQL 部分下方接受的答案中是关于本机查询的部分,这是我感兴趣的。我知道它可以通过其他方式完成,我对本机查询和干净代码感到好奇。我想使用投影使其工作。没有提到它更难将其更改为 JPQL,因为不支持“减号”。使用接口的官方文档以及docs.spring.io/spring-data/jpa/docs/current/reference/html/…

标签: java spring hibernate spring-data-jpa


【解决方案1】:

对于遇到相同问题的任何人
我正在使用休眠 5.1.2.Final

我想有一个错误,我需要升级到休眠 5.2.11 以使其工作 见this link

【讨论】:

    猜你喜欢
    • 2018-08-07
    • 2018-09-15
    • 2018-04-18
    • 2016-07-19
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多