From 22adab4f9355507eb3fc4473f0879182752b94dd Mon Sep 17 00:00:00 2001
From: Redkale <22250530@qq.com>
Date: Mon, 31 Oct 2016 16:28:24 +0800
Subject: [PATCH]
---
src/org/redkale/source/FilterNode.java | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
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));
}