我有一张名为casemessage
的表格,其中包含以下列。我正在尝试使用Spring Framework JPA
查询/搜索JSON
列。
- id(编号)
- created_by(创建者)
- created_utc(创建日期)
- from_id(来源编号)
- message(消息)
- status(状态)
- case_id(案例编号)
在这里,status
列存储了一系列JSON
字符串。例如:
1. [{"user_id": 1, "status": "sent"}, {"user_id": 2, "status": "delete"}]
2. [{"user_id": 3, "status": "delete"}, {"user_id": 2, "status": "sent"},{"user_id": 1, "status": "received"}]
3. [{"user_id": 1, "status": "received"}, {"user_id": 2, "status": "sent"}]
4. [{"user_id": 1, "status": "delete"}, {"user_id": 3, "status": "sent"}]
我正在尝试查询casemessage
表,以获取所有user_id
为1
且status
不是delete
的行。
使用MySQL
查询,我能够查询表并获得预期结果。
以下是我尝试的查询:
select * from casemessage where case_Id=1 and id not in(select id from cwot.casemessage where json_contains(status, '{"status" :"delete"}') and json_contains(status, '{"user_id" : 1}'));
当我尝试使用Spring Framework JPA
(Spring Boot
)执行此操作时,运行应用程序时出现了异常。这是我尝试的语句:
@Query("select c from CaseMessage c where c.caseId=?1 and c.id not in(select cm.id from CaseMessage cm where json_contains(status, '{\"status\": \"delete\"}') and json_contains(status, '{\"user_id\": ?2}'))")
List<CaseMessageResponse> getAllCaseMessages(long caseId, long userId);
我收到的错误信息是:
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected AST node: ( near line 1, column 172 [select c from com.cwot.domain.CaseMessage c where c.caseId=?1 and c.id not in(select cm.id from com.cwot.domain.CaseMessage cm where json_contains(status, '{"status": "delete"}') and json_contains(status, '{"user_id": ?1}'))]
有人可以帮我吗?
非常感谢任何帮助。