我有一个spring boot
应用程序,JPA
用于访问数据库中的数据。现在,我需要执行一个更复杂的查询,但是我不知道如何进行查询。
在我的存储库界面中,我有一个有效的查询,该查询按用户名选择用户的所有chatThreads:
@Query("SELECT chatThread FROM ChatThread chatThread WHERE (chatThread.userId) = (:id)")
public List<ChatThread> find(@Param("id") String id);
但是,现在如何调整它,以仅选择尚未阅读的消息?存在一个hibernate OneToMany relationship
,该方案如下所示:
基于您的评论,并假设您对一对多关系ChatThread
的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)
如果您不使用布尔值到整数的转换,则可能需要更改message.read的条件,例如message.read = 1
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句