我从hibernate搜索开始,在List<Integer>
上查询时遇到困难
我创建了一个桥来翻译列表<整数>到字符串。由此,我可以按关键字搜索列表中任何项目的精确匹配,但我似乎无法使用范围进行查询。
我的实体A具有一个定义为List的属性"b"。
我想知道是否有人能帮助我查询所有在定义范围内有任何b元素的A实体?
例如:一个具有以下集合{1,10,15}的实例,应该出现在对"b"属性的以下查询中:
低于(20),上述(14),低于(2)
但不是在像这样的搜索中
高于(16)、低于(0)。
我希望我说清楚了。提前感谢!
将桥接器更改为多次存储同一字段,每次都具有Integer列表的值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过滤器来实现这一点,但过滤器有点复杂。