映射到新对象的JPSQ自定义查询

时间:2019-02-18 19:57:51

标签: sql spring-boot spring-data-jpa h2

如何通过JPARepository将此SQL表达式转换为JPSQ自定义@Query并映射到Java Spring Boot中的新对象

SELECT DOCUMENT_TYPE.TITLE, SUM(case when DOCUMENT.DOCUMENT_STATE  = 1 then 1 else 0 end) as CREATED, SUM(case when DOCUMENT.DOCUMENT_STATE  = 0 then 1 else 0 end) as SUBMITTED  FROM DOCUMENT_TYPE JOIN DOCUMENT ON DOCUMENT_TYPE.ID = DOCUMENT.DOCTYPE_ID WHERE DOCUMENT.DOCTYPE_ID IN ('93227282-713d-4465-b296-a215b917a0b0', 'a9b29894-9952-4ec4-b854-d19f01c28a37') GROUP BY DOCUMENT_TYPE.TITLE

我有实体:

Document.java 映射了一种与 DocumentType

的关系
@ManyToOne
@JoinColumn(name = "doctype_id")
private DocumentType documentType;
private DocumentState documentState;

文档状态是数据库中用0、1 ...整数表示的枚举。

如何分别选择DocumenType.title,状态为1和0的文档汇总并将其映射到具有字段的新Object TypeStats.java

public class TypeStats {

private String title;
private Long stateSubmitted;
private Long stateApproved;

因此,最后我想查询有关具有两个不同状态(提交和批准)的文档的总和(每个文档分别)的信息,并将文档类型id作为参数传递。如何使用单个JPQL查询并将其映射到新对象。

0 个答案:

没有答案