hazelcast predicate

老實說我對 jpa 的 criteria 跟 specification 查詢方式一直用起來很不順手,理解上也有問題。
使用上一直get來get去就算了,竟然使用字串來做查詢條件。
只要一改屬性名稱,就完全沒辦法用IDE 無痛 REFACTOR。
而且在做關聯性的查詢使用,簡直是不知道自己在做什麼。

最近使用IMDG的解決方案hazelcast。
平常在對MAP做操作時,也免不了要寫一堆predicate


 public static PredicateBuilder getDeviceConfigPredicate() {
        EntryObject e = new PredicateBuilder().getEntryObject();
        PredicateBuilder predicate = e.get("configId").equal(CONFIG_ID)
          .and(e.get(Constants.DEVICE_TYPE).equal(DeviceType.WTF));
        return predicate;
    }


後來發現有支援 java 8 predicate,可以改成下列方式寫查詢,甚至直接用 Lambda expressions

 Predicate<String, Config> CONFIG_PREDICATE = (
            Entry<String, Config> entry) -> {
        return CONFIG_ID.equals(entry.getValue().getConfigId())               
             && Constants.DEVICE_TYPE.equals(entry.getValue().getDeviceType());
    };
 

其實因為 stream().filter ,平常就常用到predicate了。
只是 Lambda用爽爽 完全沒注意參數而已...

留言

熱門文章

汐科定便當記錄(一)

汐科定便當記錄 (完)

ireport換行