finder list --depth 2 --filter name,price
有谁能告诉我如何过滤它们只包含“名称”和“价格”查找器? 即 findBooksByNameNotEqualsAndPrice(String name,Float price) findBooksByNameEqualsAndPrice(String name,Float price) ......
答案 0 :(得分:1)
我检查了Roo的源代码,看起来没有办法获得AND之类的行为,并且finder附加组件只支持基于OR的逻辑。
在此处查看finder addon src:https://github.com/SpringSource/spring-roo/blob/master/addon-finder/src/main/java/org/springframework/roo/addon/finder/FinderCommands.java#L71。
或源代码就在这里:
final SortedSet<String> result = new TreeSet<String>();
for (final String finder : finders) {
required: for (final String requiredEntry : requiredEntries) {
if (finder.toLowerCase().contains(requiredEntry)) {
result.add(finder);
break required;
}
}
}
return result;
看起来list操作每次在finder小写名称中找到任何必需的条目时都会向结果列表添加一个过滤器。
我能想到过滤列表的唯一方法是复制 finder list 命令的输出并在其上运行外部类似grep的实用程序。 否则,您可以尝试尽可能多地匹配查找程序名称:例如 EqualsAndPrice(字符串名称)。使用所有普通java String.contains 方法。< / p>
答案 1 :(得分:1)
根据我的经验,我注意到在实体的注释中直接复合查找器名称更容易: @RooJpaActiveRecord(finders = {“findTubesByVectorOrResearcher”,“findTubesByBox”}) 您可以混合实体属性,'And','Or','Like','Between'等等。
对于你的问题,我认为grep是一个简单的解决方案。