Mar*_*cek 0 java sql hibernate jpa
我有一个spring boot应用程序,用于JPA访问数据库中的数据。现在我需要执行更复杂的查询,但我不知道如何进行。
在我的存储库界面中,我有一个工作查询,它通过用户名选择用户的所有聊天线程:
@Query("SELECT chatThread FROM ChatThread chatThread WHERE (chatThread.userId) = (:id)")
public List<ChatThread> find(@Param("id") String id);
Run Code Online (Sandbox Code Playgroud)
但现在如何调整它,只选择尚未阅读的消息呢?存在一个hibernate OneToMany relationship并且该方案看起来像这样:

根据您的评论并假设您在ChatThreadas上具有 OneToMany 关系List<Message> messages,您的 JPQL 查询应如下所示:
SELECT chatThread FROM ChatThread chatThread WHERE (chatThread.userId) = (:id) AND NOT EXISTS (SELECT message FROM chatThread.messages message WHERE message.read = TRUE)
Run Code Online (Sandbox Code Playgroud)
如果您不使用布尔到整数转换,例如 ,您可能必须更改 message.read 的条件message.read = 1。
| 归档时间: |
|
| 查看次数: |
1744 次 |
| 最近记录: |