hazelcast predicate
老實說我對 jpa 的 criteria 跟 specification 查詢方式一直用起來很不順手,理解上也有問題。
使用上一直get來get去就算了,竟然使用字串來做查詢條件。
只要一改屬性名稱,就完全沒辦法用IDE 無痛 REFACTOR。
而且在做關聯性的查詢使用,簡直是不知道自己在做什麼。
最近使用IMDG的解決方案hazelcast。
平常在對MAP做操作時,也免不了要寫一堆predicate
後來發現有支援 java 8 predicate,可以改成下列方式寫查詢,甚至直接用 Lambda expressions
其實因為 stream().filter ,平常就常用到predicate了。
只是 Lambda用爽爽 完全沒注意參數而已...
使用上一直get來get去就算了,竟然使用字串來做查詢條件。
只要一改屬性名稱,就完全沒辦法用IDE 無痛 REFACTOR。
而且在做關聯性的查詢使用,簡直是不知道自己在做什麼。
最近使用IMDG的解決方案hazelcast。
平常在對MAP做操作時,也免不了要寫一堆predicate
public static PredicateBuilder getDeviceConfigPredicate() { EntryObject e = new PredicateBuilder().getEntryObject(); PredicateBuilder predicate = e.get("c
onfigId
").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,
> entry) -> { return
Config
CONFIG_ID.equals(entry.getValue().getConfigId())
&&
Constants.DEVICE_TYPE
.equals(entry.getValue().get
DeviceType
()); };
其實因為 stream().filter ,平常就常用到predicate了。
只是 Lambda用爽爽 完全沒注意參數而已...
留言
張貼留言