From 01937e192f31bffd2a4f9cf3baeab70320fd1a92 Mon Sep 17 00:00:00 2001 From: kamhung <22250530@qq.com> Date: Mon, 30 Nov 2015 17:29:10 +0800 Subject: [PATCH] --- .../wentch/redkale/source/FilterBeanNode.java | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/com/wentch/redkale/source/FilterBeanNode.java b/src/com/wentch/redkale/source/FilterBeanNode.java index 83e2e4ca3..df6257f3a 100644 --- a/src/com/wentch/redkale/source/FilterBeanNode.java +++ b/src/com/wentch/redkale/source/FilterBeanNode.java @@ -94,12 +94,12 @@ final class FilterBeanNode extends FilterNode { .append(" ").append(alias).append(" ON a.").append(secinfo.getSQLColumn(jc)).append(" = ") .append(alias).append(".").append(secinfo.getSQLColumn(jc)); } - newnode.foreignEntity = secinfo; + newnode.foreignCache = secinfo.getCache(); newnode.tabalis = alias; newnode.columnAttribute = secinfo.getAttribute(newnode.column); newnode.byjoinColumn = jc; newnode.foreignAttribute = secinfo.getAttribute(jc); - if (newnode.foreignEntity != null && newnode.foreignAttribute == null) throw new RuntimeException(clazz.getName() + "." + field.getName() + " have illegal FilterJoinColumn " + joinCol); + if (newnode.foreignCache != null && newnode.foreignAttribute == null) throw new RuntimeException(clazz.getName() + "." + field.getName() + " have illegal FilterJoinColumn " + joinCol); } } //------------------------------------ @@ -147,7 +147,7 @@ final class FilterBeanNode extends FilterNode { //--------------------------------------------------------------------------------------------- private Attribute beanAttribute; - private EntityInfo foreignEntity; // join 表 + private EntityCache foreignCache; // join 表 private String byjoinColumn; //被join表的join字段 @@ -202,7 +202,7 @@ final class FilterBeanNode extends FilterNode { FilterBeanNode newnode = new FilterBeanNode(this.column, this.or, this.beanAttribute); newnode.express = this.express; newnode.nodes = this.nodes; - newnode.foreignEntity = this.foreignEntity; + newnode.foreignCache = this.foreignCache; newnode.byjoinColumn = this.byjoinColumn; newnode.foreignAttribute = this.foreignAttribute; newnode.columnAttribute = this.columnAttribute; @@ -217,7 +217,7 @@ final class FilterBeanNode extends FilterNode { if (node instanceof FilterBeanNode) { FilterBeanNode beanNode = ((FilterBeanNode) node); this.beanAttribute = beanNode.beanAttribute; - this.foreignEntity = beanNode.foreignEntity; + this.foreignCache = beanNode.foreignCache; this.byjoinColumn = beanNode.byjoinColumn; this.foreignAttribute = beanNode.foreignAttribute; this.columnAttribute = beanNode.columnAttribute; @@ -235,14 +235,14 @@ final class FilterBeanNode extends FilterNode { @Override protected Predicate createPredicate(final EntityCache cache, FilterBean bean) { - if (this.foreignEntity == null) return super.createPredicate(cache, bean); - final Map foreign = new HashMap<>(); + if (this.foreignCache == null) return super.createPredicate(cache, bean); + final Map foreign = new HashMap<>(); Predicate result = null; putForeignPredicate(cache, foreign, bean); if (this.nodes != null) { for (FilterNode n : this.nodes) { FilterBeanNode node = (FilterBeanNode) n; - if (node.foreignEntity == null) { + if (node.foreignCache == null) { Predicate f = node.createPredicate(cache, bean); if (f == null) continue; final Predicate one = result; @@ -278,16 +278,17 @@ final class FilterBeanNode extends FilterNode { if (foreign.isEmpty()) return result; final String byjoinCol = this.byjoinColumn; final Attribute foreignAttr = this.foreignAttribute; - for (final Map.Entry en : foreign.entrySet()) { + for (final Map.Entry en : foreign.entrySet()) { Attribute byjoinAttr = cache.getAttribute(byjoinCol); final Predicate p = en.getValue(); + final EntityCache joinCache = en.getKey(); Predicate f = new Predicate() { @Override public boolean test(T t) { Serializable key = byjoinAttr.get(t); Predicate k = (e) -> key.equals(foreignAttr.get(e)); - return cache.exists(k.and(p)); + return joinCache.exists(k.and(p)); } @Override @@ -324,8 +325,8 @@ final class FilterBeanNode extends FilterNode { return result; } - private void putForeignPredicate(final EntityCache cache, final Map foreign, FilterBean bean) { - if (this.foreignEntity == null) return; + private void putForeignPredicate(final EntityCache cache, final Map foreign, FilterBean bean) { + if (this.foreignCache == null) return; final Serializable val = getElementValue(bean); Predicate filter = (val == null && express != ISNULL && express != ISNOTNULL) ? new Predicate() { @@ -340,9 +341,9 @@ final class FilterBeanNode extends FilterNode { } } : super.createElementPredicate(cache, this.columnAttribute, bean); if (filter == null) return; - Predicate p = foreign.get(this.foreignEntity); + Predicate p = foreign.get(this.foreignCache); if (p == null) { - foreign.put(foreignEntity, filter); + foreign.put(foreignCache, filter); } else { final Predicate one = p; final Predicate two = filter; @@ -369,7 +370,7 @@ final class FilterBeanNode extends FilterNode { return "(" + one + " AND " + two + ")"; } }; - foreign.put(foreignEntity, p); + foreign.put(foreignCache, p); } }