使用String.matches()作为JDO查询中的查询过滤器不会产生任何结果

问题描述 投票:1回答:1

使用下面的代码:

Query query = newJdoQuery();
query.setFilter("identifier.matches('partner|account')");
query.execute();

没有结果。为什么?

enter image description here

但是,将正则表达式部分替换为“伙伴”。该查询产生1个结果。将其替换为“帐户”会产生另外6个结果。看看下面的图片。

enter image description hereenter image description here

datanucleus jdoql
1个回答
0
投票

阅读JDO规范,您会看到“ |”不是“匹配”调用的有效操作数。参见JDO规范14.6.2

适用于String类型;仅以下正则表达式模式需要被支持并且是可移植的:全局“(?i)”表示不区分大小写的匹配;以及通配符匹配的“。”和“。*”。的传递给匹配的模式必须是文字或参数。

您可以通过在日志中查看所调用的SQL来调试这些东西。

不,这似乎不是错误,也不是“未修复”,因为它不是错误。

FWIW关于marcolopes问题,他多次被要求提供一个测试案例来证明他的“问题”,而从不提供任何东西。很难“修复”未显示的内容。

© www.soinside.com 2019 - 2024. All rights reserved.