【发布时间】:2013-11-22 10:30:44
【问题描述】:
将 JDO 与 Datanucleus 结合使用,我正在尝试从我的数据库中过滤一些数据(使用 jdoql)。我想使用正则表达式进行一些复杂的搜索,我发现 JDO 提供了接受正则表达式的 String 方法“matches”,并且根据 DATANUCLEUS 文档,该方法可以接收任何类型的 ExpReg:
matches(String pattern) :返回字符串是否匹配传递的表达式。模式参数遵循 java.lang.String.matches 方法的规则。
我能够根据一些正则表达式(如“.*”、“.”、“.*”)进行过滤,但不能使用其他表达式(如 [abcd])
有人可以确认不是所有的正则表达式语法都支持吗??
Query q = pm.newQuery(cl, "this.name.matches(filterName)");
q.declareParameters("String filterName");
List results = (List)q.execute("Bo.*");
return pm.detachCopyAll(results);
--> 还书,书2
But with : q.execute("B[aoe]ok") return nothing !
谢谢
【问题讨论】:
-
我敢肯定,如果您查看日志(例如调用的 SQL),您可能会更好地理解
-
谢谢,但是我在哪里可以看到从 javax.jdo.Query 调用的 sql?日志文件中没有 sql 跟踪。
-
日志文件中有 SQL ...当开发人员根据公开可见的 DataNucleus 文档将其日志记录配置到正确的级别 (DEBUG) 时。
-
我遇到了同样的问题。 MATCHES 不返回任何结果(正则表达式已用 java 代码测试并且工作正常)。
标签: jdo datanucleus jdoql