使用下面的代码:
Query query = newJdoQuery();
query.setFilter("identifier.matches('partner|account')");
query.execute();
没有结果。为什么?
但是,将正则表达式部分替换为“伙伴”。该查询产生1个结果。将其替换为“帐户”会产生另外6个结果。看看下面的图片。
阅读JDO规范,您会看到“ |”不是“匹配”调用的有效操作数。参见JDO规范14.6.2
适用于String类型;仅以下正则表达式模式需要被支持并且是可移植的:全局“(?i)”表示不区分大小写的匹配;以及通配符匹配的“。”和“。*”。的传递给匹配的模式必须是文字或参数。
您可以通过在日志中查看所调用的SQL来调试这些东西。
不,这似乎不是错误,也不是“未修复”,因为它不是错误。
FWIW关于marcolopes问题,他多次被要求提供一个测试案例来证明他的“问题”,而从不提供任何东西。很难“修复”未显示的内容。