diff --git a/src/com/wentch/redkale/source/DataDefaultSource.java b/src/com/wentch/redkale/source/DataDefaultSource.java index 83ffb8303..3dfb10200 100644 --- a/src/com/wentch/redkale/source/DataDefaultSource.java +++ b/src/com/wentch/redkale/source/DataDefaultSource.java @@ -1029,8 +1029,8 @@ public final class DataDefaultSource implements DataSource, Nameable { //--------------------------------------------------- final EntityCache cache = info.getCache(); if (cache == null) return; - cache.update(value, attrs); - if (cacheListener != null) cacheListener.updateCache(clazz, value); + T rs = cache.update(value, attrs); + if (cacheListener != null) cacheListener.updateCache(clazz, rs); } catch (SQLException e) { throw new RuntimeException(e); } diff --git a/src/com/wentch/redkale/source/EntityCache.java b/src/com/wentch/redkale/source/EntityCache.java index 2b59a69ea..33a9eb28f 100644 --- a/src/com/wentch/redkale/source/EntityCache.java +++ b/src/com/wentch/redkale/source/EntityCache.java @@ -404,13 +404,14 @@ public final class EntityCache { this.reproduce.copy(rs, value); } - public void update(final T value, Collection> attrs) { - if (value == null) return; + public T update(final T value, Collection> attrs) { + if (value == null) return value; T rs = this.map.get(this.primary.get(value)); - if (rs == null) return; + if (rs == null) return rs; for (Attribute attr : attrs) { attr.set(rs, attr.get(value)); } + return rs; } public T update(final Serializable id, Attribute attr, final V fieldValue) { @@ -672,6 +673,12 @@ public final class EntityCache { @Override public boolean test(FilterNode node) { + if (node == null || node.isOr()) return false; + if (!attribute.field().equals(node.column)) return false; + if (node.nodes == null) return true; + for (FilterNode n : node.nodes) { + if (!test(n)) return false; + } return true; } };