diff --git a/src/org/redkale/source/FilterNode.java b/src/org/redkale/source/FilterNode.java index 35047aa81..4df078a29 100644 --- a/src/org/redkale/source/FilterNode.java +++ b/src/org/redkale/source/FilterNode.java @@ -14,6 +14,7 @@ import org.redkale.util.Attribute; /** * 注意:
+ * column的值以#开头的视为虚拟字段,不在过滤范围内
* 在调用 createSQLExpress 之前必须先调用 createSQLJoin
* 在调用 createPredicate 之前必须先调用 isCacheUseable * @@ -227,7 +228,8 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则 * @return JOIN的SQL语句 */ protected CharSequence createSQLExpress(final EntityInfo info, final Map joinTabalis) { - CharSequence sb0 = this.column == null || info == null ? null : createElementSQLExpress(info, joinTabalis == null ? null : joinTabalis.get(info.getType())); + CharSequence sb0 = this.column == null || this.column.isEmpty() || this.column.charAt(0) == '#' || info == null + ? null : createElementSQLExpress(info, joinTabalis == null ? null : joinTabalis.get(info.getType())); if (this.nodes == null) return sb0; final StringBuilder rs = new StringBuilder(); rs.append('('); @@ -323,7 +325,7 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则 } private CharSequence createElementSQLExpress(final EntityInfo info, String talis, Object val0) { - if (column == null) return null; + if (column == null || this.column.isEmpty() || this.column.charAt(0) == '#') return null; if (talis == null) talis = "a"; if (express == ISNULL || express == ISNOTNULL) { return new StringBuilder().append(info.getSQLColumn(talis, column)).append(' ').append(express.value()); @@ -402,7 +404,7 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则 } protected final Predicate createElementPredicate(final EntityCache cache, final boolean join) { - if (column == null) return null; + if (this.column == null || this.column.isEmpty() || this.column.charAt(0) == '#') return null; return createElementPredicate(cache, join, cache.getAttribute(column)); }