【发布时间】:2019-03-06 05:12:13
【问题描述】:
我是一名 JPA 新手,想要对单个表(如下)进行 JPA 本机查询,我想在基于 @Entity 的名为 TestRequest 的类中获取该查询。它有一个“RequestTime”列,使用 DAYNAME() 获取,然后使用 DATEDIFF() 函数获取。
SELECT TestRequest.Id AS Id
, TestRequest.RequestTime AS RequestTime
, DAYNAME(TestRequest.RequestTime) AS RequestDay
, TestRequest.StatusMessage AS StatusMessage
, DATEDIFF(CURDATE(), TestRequest.RequestTime) AS HowLongAgo
FROM TestRequest
LEFT JOIN TestRun
ON TestRequest.TestRunId = TestRun.Id
WHERE Requestor = '[NAME]'
ORDER BY Id DESC
有什么方法可以将列(第二次作为 HowLongAgo 提取)设置为未映射到 TestRequest 类中的表列的属性?是否有任何字段级别的注释?
【问题讨论】:
-
也许您可以在您的实体中添加属性 HowLongAgo 并将其标记为 @Transient ?
-
谢谢,我想这会奏效。我是否只使用标准 Java 计算 Dayname() 和 Datediff()?
-
是的,如果你在你的实体中计算 howLongAgo,也许你会更好。但你可以在你的查询中做
-
你确定可以在查询中完成吗?如果我理解正确@Transient 不会从查询中获取任何内容...
-
我觉得这篇文章回答的比较详细-vladmihalcea.com/…
标签: spring-boot jpa spring-data-jpa