From 0c613b50689f8944c91b3ae2e64387f16d443aca 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, 3 Jun 2015 09:04:27 +0800 Subject: [PATCH] --- src/com/wentch/redkale/source/FilterBeanNode.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/com/wentch/redkale/source/FilterBeanNode.java b/src/com/wentch/redkale/source/FilterBeanNode.java index 04096ed02..e9a1a7140 100644 --- a/src/com/wentch/redkale/source/FilterBeanNode.java +++ b/src/com/wentch/redkale/source/FilterBeanNode.java @@ -238,7 +238,11 @@ final class FilterBeanNode extends FilterNode { @Override protected Predicate createFilterPredicate(final EntityInfo info, FilterBean bean) { - if (this.joinSQL == null) return super.createFilterPredicate(info, bean); + return createFilterPredicate(true, info, bean); + } + + private Predicate createFilterPredicate(final boolean first, final EntityInfo info, FilterBean bean) { + if ((this.joinSQL == null && first) || this.foreignEntity == null) return super.createFilterPredicate(info, bean); final Map foreign = new HashMap<>(); Predicate result = null; putForeignPredicate(foreign, bean); @@ -246,7 +250,7 @@ final class FilterBeanNode extends FilterNode { for (FilterNode n : this.nodes) { FilterBeanNode node = (FilterBeanNode) n; if (node.foreignEntity == null) { - Predicate f = node.createFilterPredicate(info, bean); + Predicate f = node.createFilterPredicate(false, info, bean); if (f == null) continue; result = (result == null) ? f : (signand ? result.and(f) : result.or(f)); } else { @@ -270,9 +274,10 @@ final class FilterBeanNode extends FilterNode { } private void putForeignPredicate(final Map foreign, FilterBean bean) { + if (this.foreignEntity == null) return; final Serializable val = getValue(bean); Predicate filter = (val == null && express != ISNULL && express != ISNOTNULL) ? ((t) -> signand) : super.createFilterPredicate(this.columnAttribute, val); - if (filter == null || this.foreignEntity == null) return; + if (filter == null) return; Predicate p = foreign.get(this.foreignEntity); if (p == null) { foreign.put(foreignEntity, filter);