2017-04-23 59 views
-1

我正在使用子選擇來選擇最新的帖子。這是一個好主意嗎?這是選擇最新帖子的好方法嗎?

@Query("SELECT p FROM Post p INNER JOIN p.user WHERE p.user.username = :username AND p.updated = (SELECT MAX(p.updated) FROM Post p WHERE p.user.username = :username)") 
Post findLatestByUsername(@Param("username") String username); 
+0

爲什麼不按'Post'創建日期和更新日期? –

+0

因爲這會返回多個結果。 – user672009

+0

將結果限制爲1. –

回答

-1

我想用指數descening

設置username, updated列,descening index如果你沒有這些columnes指數,以瞭解更多信息如何設置它,你可以看看鏈接它來選擇最新行的最佳方式波紋管

https://www.postgresql.org/docs/9.5/static/sql-createindex.html

那麼你的選擇會是這樣

SELECT * FROM Post p where p.user.username = :username LIMIT 1 

您讀取數據後會選擇將已descening sortet,一則可以選擇1行,這將是最新的行,數據decening由username排序(它是在where子句)和updated

而關於HQL的限制,你可以解決其他方式這個問題 請看鏈接婁

https://groups.google.com/forum/#!topic/nhibernate-development/JYE3NDcTUEA

How do you do a limit query in HQL?

LIMIT in Postgres not supported in HQL?

+0

1.這是postgresql具體。 2. HQL沒有功能限制。 – user672009

+0

有沒有辦法選擇1行? – Vecchiasignora

+0

創建一個只返回一個結果的查詢。 – user672009