From e035e71fca7d9a45b2c7994fdd4b7f668bcd44bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9C=B0=E5=B9=B3=E7=BA=BF?= <22250530@qq.com> Date: Wed, 28 Oct 2015 11:10:24 +0800 Subject: [PATCH] --- .../redkale/source/DataDefaultSource.java | 9 ++++- src/com/wentch/redkale/source/FilterNode.java | 36 +++++++++++++++---- 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/src/com/wentch/redkale/source/DataDefaultSource.java b/src/com/wentch/redkale/source/DataDefaultSource.java index e128ed17b..8b7eaa4fd 100644 --- a/src/com/wentch/redkale/source/DataDefaultSource.java +++ b/src/com/wentch/redkale/source/DataDefaultSource.java @@ -606,7 +606,14 @@ public final class DataDefaultSource implements DataSource, Nameable { if (cache == null) return; final Attribute attr = info.getPrimary(); final Serializable[] keys2 = keys; - Serializable[] ids = cache.delete((T t) -> Arrays.binarySearch(keys2, attr.get(t)) >= 0); + Serializable[] ids = cache.delete((T t) -> { + Serializable k = attr.get(t); + if (k == null) return false; + for (Serializable y : keys2) { + if (k.equals(y)) return true; + } + return false; + }); if (cacheListener != null) cacheListener.deleteCache(info.getType(), ids); } catch (SQLException e) { throw new RuntimeException(e); diff --git a/src/com/wentch/redkale/source/FilterNode.java b/src/com/wentch/redkale/source/FilterNode.java index da083e733..63e485650 100644 --- a/src/com/wentch/redkale/source/FilterNode.java +++ b/src/com/wentch/redkale/source/FilterNode.java @@ -498,7 +498,11 @@ public class FilterNode { public boolean test(T t) { Object rs = attr.get(t); if (rs == null) return false; - return Arrays.binarySearch((int[]) val, (int) rs) >= 0; + int k = (int) rs; + for (int v : (int[]) val) { + if (v == k) return true; + } + return false; } @Override @@ -513,7 +517,11 @@ public class FilterNode { public boolean test(T t) { Object rs = attr.get(t); if (rs == null) return false; - return Arrays.binarySearch((short[]) val, (short) rs) >= 0; + short k = (short) rs; + for (short v : (short[]) val) { + if (v == k) return true; + } + return false; } @Override @@ -528,7 +536,11 @@ public class FilterNode { public boolean test(T t) { Object rs = attr.get(t); if (rs == null) return false; - return Arrays.binarySearch((long[]) val, (long) rs) >= 0; + long k = (long) rs; + for (long v : (long[]) val) { + if (v == k) return true; + } + return false; } @Override @@ -543,7 +555,11 @@ public class FilterNode { public boolean test(T t) { Object rs = attr.get(t); if (rs == null) return false; - return Arrays.binarySearch((float[]) val, (float) rs) >= 0; + float k = (float) rs; + for (float v : (float[]) val) { + if (v == k) return true; + } + return false; } @Override @@ -558,7 +574,11 @@ public class FilterNode { public boolean test(T t) { Object rs = attr.get(t); if (rs == null) return false; - return Arrays.binarySearch((double[]) val, (double) rs) >= 0; + double k = (double) rs; + for (double v : (double[]) val) { + if (v == k) return true; + } + return false; } @Override @@ -572,7 +592,11 @@ public class FilterNode { @Override public boolean test(T t) { Object rs = attr.get(t); - return rs != null && Arrays.binarySearch((Object[]) val, rs) >= 0; + if (rs == null) return false; + for (Object v : (Object[]) val) { + if (rs.equals(v)) return true; + } + return false; } @Override