【发布时间】:2014-10-07 08:33:43
【问题描述】:
所以我的目标是写一本特定的书(具有给定的 id),以获取每种语言的已发布版本。如果没有发布版本,那么我需要按时间戳检索最新版本。
我需要在 group 之前执行 order by 的查询。
我知道在 sql 中你可以做到(大致)
Select * From
( Select b from Book as b where b.author = ?1 ORDER BY (case when b.info.status=published then 1 else 2) asc, b.timestamp desc)
GroupBy book.language
但是我不知道如何通过使用休眠在 jpa 存储库中的查询来执行类似的连接。 我知道这不起作用,因为“in”导致订单丢失
Select a From book a where a.id in
( Select b from Book as b where b.author=?1 ORDER BY (case when b.info.status=published then 1 else 2) asc, b.timestamp desc)
GroupBy a.language
当它通过并签入时,这意味着订单未被保留。无论如何在 jpa 存储库中执行此查询?
我不想“为每个人”做一个并获得已发布/最新的,因为这将非常低效
书籍设置为
书 |作者|信息编号
那么 info id 有:
信息|语言|时间戳 |状态|…………
一个示例的目标是: 获取 j.k.罗琳以每种语言发布/最新
书的示例设置是
book | author | info id
1 |Rowling |1
2 |Rowling |2
3 |Rowling |3
4 |Rowling |4
5 |Tolkein |5
信息:
id|lang|ts | status
1 |en |1 | published
2 |de |5 | unpublished
3 |de |3 | unpublished
4 |en |9 | unpublished
5 |en |4 | published
请求它会归还书 1(如已发布的英文版)和 2(如 de,de 中时间戳最高)
【问题讨论】:
-
分组依据(2 个字)?
-
您认为会有更多具有相同信息 ID 的书籍吗?或者同一本书会有更多的信息ID?不同的书本可以有不同的作者,可以吗?
-
嗨抱歉不清楚每本书都有自己的信息ID。一位作者将拥有多本书。有多个作者,但我会特别关注一位。因此,目标是获取特定作者的每本书的每种语言的已出版的,否则是最新的。将书籍视为更多的修订。
标签: java sql spring hibernate jpa