我正在尝试将 FullTextFilters 添加到 hibernate 中的 FullTextQuery 中,并且只有方法 FullTextFilter.setParameter(String name, Object value)
我正在尝试创建一个灵活的通用函数,根据其搜索的实体向查询添加过滤器,有些有一个参数,有些有两个过滤器,所以我想向添加一种方法>FullTextFilterImpl
; setParameters(String[] names, String[] value)
我可以在其中传入所有参数的名称,可能还可以传入每个参数的值的多维数组来转换我当前的代码
If( "checking which entity it is"){
fullTextQuery.enableFullTextFilter("FilterName").setParameter("firstFilter", "val1").setParameter("secondFilter", "val2");
}
else if("this entity's filter only has one parameter"){
fullTextQuery.enableFullTextFilter("FilterName").setParameter("firstFilter", "val1");
}
我尝试创建 FullTextFilterImpl 的子类并在其中放入 setParameters
函数,但此代码的设置方式我不确定如何将其用作 FullTextQuery.enableFullTextFilter( filterName)
返回一个 FullTextFilter
对象,然后对该对象调用 setParameter()
。我不确定如何进行 setParameters
编辑:我已经下载了 hibernate-search 源代码并将以下方法添加到 FullTextFilterImpl 中,我认为它可以实现我想要的功能,但是当我去构建它时(即使只是开箱即用的项目)我收到所有这些 checkstyle Only one new line is allowed at the end of a file
错误。 hibernate 快速构建指南中是否遗漏了一些内容。
public FullTextFilter setParameters(Map<String, List<String>> params){
for (String key : params.keySet()) {
List<String> values = params.get(key);
for(int i=0; i< values.size() ; i++){
parameters.put(key, values.get(i));
}
}
return this;
}
最佳答案
您可以轻松地将属性映射传递给您的自定义过滤器,签名是:
FullTextFilter setParameter(String name, Object value);
所以你可以这样做
filter.setParameter( "myMap", properties );
其中属性是 HashMap 。
关于编译错误信息:
Only one new line is allowed at the end of a file
是来自checkstyle的消息,它验证代码风格是否符合Hibernate代码风格。 修复方法非常简单:源文件末尾有多个空行,将其删除即可。错误消息应该告诉您哪些文件需要修改。
关于java - 如何编辑 Hibernate Search java 源代码,或者可能是一个解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19572840/