2012-06-14 60 views
3

我在文檔中找不到這個。Hazelcast查詢可以使用對象方法嗎?

如果我有一個hazelcast緩存一個複雜的對象:

public class MyObj { 
    private int something; 
    private AnotherObject complexMember; 
} 

我可以這樣做:

map.values(new SqlPredicate("something > 3 AND complexMember.someProperty > 3")); 

我知道@Cachable註釋使用SpEL其中這是可能的。是否有可能以某種方式編程?

謝謝,

回答

5

是的可能。嘗試跟隨;

public static void main(String[] args) throws Exception { 
    final HazelcastInstance hz = Hazelcast.newHazelcastInstance(null); 
    final IMap map = hz.getMap("test"); 
    map.put(1, new MyObj(1, new AnotherObject("value"))); 

    System.out.println(map.values(new SqlPredicate("something > 0 and complexMember.someString like 'val%'"))); 
} 

static class MyObj implements Serializable { 
    private int something; 
    private AnotherObject complexMember; 

    MyObj(final int something, final AnotherObject complexMember) { 
     this.something = something; 
     this.complexMember = complexMember; 
    } 
} 

static class AnotherObject implements Serializable { 
    private String someString; 

    AnotherObject(final String someString) { 
     this.someString = someString; 
    } 
} 
相關問題