我开始使用hibernate搜索,并且正在努力查询List<Integer>
我创建了一个桥梁来翻译列表&lt; Integer&gt;到一个字符串。从这里,我可以通过关键字完全匹配列表中的任何项目,但我似乎无法使用范围查询它。
我的实体A的属性“b”定义为List。
我想知道是否有人可以帮我查询所有在定义范围内有任何b元素的A实体?
例如: 具有以下集合{1,10,15}的实例应出现在以下关于“b”属性的查询中:
下面(20), 上述(14), 下面(2)
但不是在搜索中:
以上(16),低于(0)。
我希望自己清楚明白。 提前谢谢!
答案 0 :(得分:0)
将您的网桥更改为多次存储相同的字段,每个字段都包含整数列表的值a。因此,假设您的字段名为myInt,则存储myInt = 1,myInt = 10和myInt = 15,示例代码:
public class MyBridge implements FieldBridge {
public void set(String name, Object value, Document document, LuceneOptions luceneOptions) {
if (value instanceof List){
for(Object myInt:(List)value){
Field myIntField = new Field(name, myInt.toString(), luceneOptions.getStore(), luceneOptions.getIndex(), luceneOptions.getTermVector());
myIntField.setBoost(luceneOptions.getBoost());
document.add(myIntField);
}
}
}
}
或者,您可以插入一些自定义lucene Filter来执行此操作,但过滤器有点令人费解。