我正在尝试构建一个 JDOQL 查询(使用 datanucleus),它将根据拥有的一对多子类中的条件搜索父类的匹配项。查询如下所示:
Query lQ = lPm.newQuery("select from "+Module.class.getName()+
" where moduleMappings.contains(m)" +
" && showNameParam.matches(m.criteria.trim())");
lQ.declareVariables(ModuleMapping.class.getName()+" m");
lQ.declareParameters("String showNameParam");
lRet = (List<Module>) lQ.execute("StarTrek");
我的数据集如下所示:
- 模块[1]
- ModuleMapping[1]: 标准=".*"
- 模块[2]
- ModuleMapping[1]: 标准=".*星际迷航.*"
- ModuleMapping[2]: 标准=".*StarWars.*"
查询从不匹配任何内容!但是,如果我用文字matches
替换JDOQL 方法的参数:
Query lQ = lPm.newQuery("select from "+Module.class.getName()+
" where moduleMappings.contains(m)" +
" && showNameParam.matches('.*StarTrek.*')");
事情将适用于该单个示例,我的查询将找到Module[2]。我错过了什么?我是否不允许使用映射字段的内容作为 JDOQL 方法的参数?我需要以某种方式逃避事情吗?
戴夫