我正在处理Hibernate查询,该查询获取记录列表并计入2个单独的查询。此查询还具有传递SEARCH STRING以根据给定搜索条件过滤数据的功能。
现在我遇到了一个问题,我试图在JSON列上搜索这个给定的输入。 当我尝试搜索任何只包含字母表的正常字符串时,一切正常,例如' Project ABC'。但是,当我在搜索字符串中引入连字符( - )时,MySQL会返回给定HQL查询的空结果。对于具有作为TEXT存储在其中的JSON值的列,会出现此问题。示例查询如下:
select *
from SERVICE_PROVIDER_TRACKER servicepro0_
where (servicepro0_.requestParams like '%ProjectName:"%Order Lo-%"%' or
servicepro0_.REQUESTER_ID like '%Order Lo-%' or
servicepro0_.PROVIDER_SALES_ORDER like '%Order Lo-%')
order by servicepro0_.REQUESTED_ON desc;
在上面的示例查询中, requestParams 是JSON列。即使我从条件中删除该列,我仍然无法获得任何数据。
我尝试使用 ESCAPE IN ,如以及 REGEXP 。
有人可以帮帮我吗?
更新:以下是JSON示例:
{
.............
NotifyEmailWhenResponseReceivedForBoq: "N",
termsConditions: "Y",
Currency: "1",
ProjectName: "Order-88",
BoMNameCreation: "Use Provider's BoM name",
............................
providerId: "com.yagna.common.domain.Orgnization:604"
}