From bb77681445f840b0b903e8a2c57d37cf55905e0e Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Wed, 24 Aug 2016 16:08:12 +0800 Subject: [PATCH] --- src/org/redkale/source/DataDefaultSource.java | 46 +++++++++++-------- src/org/redkale/source/EntityInfo.java | 10 +++- src/org/redkale/source/FilterJoinNode.java | 2 +- src/org/redkale/source/FilterNode.java | 11 +++++ 4 files changed, 47 insertions(+), 22 deletions(-) diff --git a/src/org/redkale/source/DataDefaultSource.java b/src/org/redkale/source/DataDefaultSource.java index 309625c82..39881dca7 100644 --- a/src/org/redkale/source/DataDefaultSource.java +++ b/src/org/redkale/source/DataDefaultSource.java @@ -348,7 +348,7 @@ public final class DataDefaultSource implements DataSource, Function { return table == null; } - public String getTable() { + public String getTable(Serializable primary) { + return table; + } + + public String getTable(FilterNode node) { + return table; + } + + public String getTable(T bean) { return table; } diff --git a/src/org/redkale/source/FilterJoinNode.java b/src/org/redkale/source/FilterJoinNode.java index dea497d4c..826a57ee2 100644 --- a/src/org/redkale/source/FilterJoinNode.java +++ b/src/org/redkale/source/FilterJoinNode.java @@ -277,7 +277,7 @@ public class FilterJoinNode extends FilterNode { if (node.joinClass == null) return null; StringBuilder sb = new StringBuilder(); String[] joinColumns = node.joinColumns; - sb.append(" INNER JOIN ").append(node.joinEntity.getTable()).append(" ").append(joinTabalis.get(node.joinClass)) + sb.append(" INNER JOIN ").append(node.joinEntity.getTable(node)).append(" ").append(joinTabalis.get(node.joinClass)) .append(" ON ").append(info.getSQLColumn("a", joinColumns[0])).append(" = ").append(node.joinEntity.getSQLColumn(joinTabalis.get(node.joinClass), joinColumns[0])); for (int i = 1; i < joinColumns.length; i++) { sb.append(" AND ").append(info.getSQLColumn("a", joinColumns[i])).append(" = ").append(node.joinEntity.getSQLColumn(joinTabalis.get(node.joinClass), joinColumns[i])); diff --git a/src/org/redkale/source/FilterNode.java b/src/org/redkale/source/FilterNode.java index 6c92efa1b..f0556220f 100644 --- a/src/org/redkale/source/FilterNode.java +++ b/src/org/redkale/source/FilterNode.java @@ -77,6 +77,17 @@ public class FilterNode { this.value = val; } + public Serializable findValue(final String col) { + if (this.column.equals(col)) return this.value; + if (this.nodes == null) return null; + for (FilterNode n : this.nodes) { + if (n == null) continue; + Serializable val = n.findValue(col); + if (val != null) return val; + } + return null; + } + public final FilterNode and(FilterNode node) { return any(node, false); }