【发布时间】:2016-12-09 04:38:23
【问题描述】:
我有一个带有字符串字段(存储 JSON)的实体,并且需要将其数据库列中的值与另一个值进行比较。问题是这个数据库列的类型是 TEXT,但实际上它包含 JSON。那么,有没有办法写出这样的东西? IE。我需要将我的值与 TEXT 列中的一些 JSON 字段进行比较。
criteriaBuilder.equal(root.get("json_column").customExpressionn(new Expression{
Object handle(Object data){
return ((Object)data).get("json_field")
}
}), value)
【问题讨论】:
-
使用 CAST?使用函数?
-
@NeilStockton,你的意思是调用 sql 函数,它解析 JSON 并返回我的字段?我希望找到一些 CriteriaAPI 解决方案。
-
@NeilStockton,我的实体?它有什么帮助?我的实体只有
String字段,其中包含 JSON。 -
我不知道你想达到什么目标。您有一个存储字符串值的字符串字段,存储在 TEXT 列中,并希望将其与某个值进行比较。您不需要任何自定义处理程序,只需执行“equal()”即可。如果您想要比较文本字符串的某些部分......那么您将给出数据存储中的文本字符串的示例以及您想要比较的部分
-
@NeilStockton,这里是这个字符串的一个例子:"{field1: \"value\",field2: \"value2\"}"。我需要将我的一些字符串与 field2 的值进行比较。
标签: jpa criteria-api