在Hazelcast中,是否可以根據鍵的屬性而不是值來查詢IMap?所有Hazelcast示例都顯示按價值查詢。例如,在地圖的員工與是字符串鍵一:可能通過鍵而不是Hazelcast中的值進行查詢(使用謂詞)?
IMap<String, Employee> employees;
典型的搜索謂詞然後根據公司員工屬性(姓名,工資等)進行搜索。但我的情況下使用更復雜的按鍵,如:
IMap<DataAttributes, DataValue> myData;
因此,如果數據屬性具有諸如:
class DataAttributes {
String theDescription;
Date theStartTime;
public String getDescription() { return theDescription; }
// etc....
}
我想寫一個謂詞,可以通過按鍵查詢,返回一個合適的DataValue對象。這不起作用:
Predicate pred = Predicates.equal("description", "myDescription");
myData.keySet(pred); // Throws IllegalArgumentException: "There is no suitable accessor for..."
我可以滾我,自己在this answer建議,但如果我可以,我寧願用一個徹頭徹尾的現成解決方案。
如果使用Criteria API或分佈式SQL查詢API結束,這並不重要。任何工作查詢將是偉大的。用於嵌套屬性的解決方案的獎勵點(即:DataAttributes theStartTime.getYear()
)。
請注意,當大量數據加載到地圖中時,使用謂詞(在鍵或值上)非常昂貴...請小心使用此用法! – Donatello
@Donatello對。我通常使用索引來緩解這一點。並使用適當的序列化器也很有幫助。 –