2013-08-19 63 views
0

我開始使用Hibernate搜索,並正與查詢上List<Integer>Hibernate的搜索範圍<Integer>

掙扎我創建了一個橋到列表<整數>轉換爲字符串。從這裏,我可以通過關鍵字精確匹配搜索列表上的任何項目,但我似乎無法使用範圍來查詢它。

我的實體A具有定義爲List的屬性「b」。

我想知道是否有人可以幫助我查詢所有具有定義範圍內的任何b元素的實體?

例如: 一個與下列集合{1,10,15},應該拿出在以下查詢中的 「b」 的屬性的實例:

下面(20),上述 (14) , 下面(2)

但不是在如搜索:

上述(16)中,以下(0)。

我希望我自己清楚。 在此先感謝!

回答

0

將您的網橋更改爲多次存儲相同的字段,每個字段的值均爲整數列表的值a。因此,假如你的領域被稱爲敏,你將存儲敏= 1敏= 10,敏= 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做到這一點,但過濾器有點複雜。

+0

感謝您的輸入,可以請你提供一些示例代碼來創建獨立存儲值的橋? –

+0

回答更新了示例代碼。 – Taylor

+0

謝謝!我會嘗試,然後接受你的答案! –