Browse Source

修复 跨表字段问题

zhouhao 8 năm trước cách đây
mục cha
commit
f09277194c

+ 14 - 0
hsweb-web-dao/hsweb-web-dao-mybatis/src/main/java/org/hsweb/web/mybatis/builder/InsertSqlBuilder.java

@@ -1,6 +1,9 @@
 package org.hsweb.web.mybatis.builder;
 
+import org.hsweb.ezorm.core.param.InsertParam;
+import org.hsweb.ezorm.rdb.executor.SQL;
 import org.hsweb.ezorm.rdb.meta.RDBColumnMetaData;
+import org.hsweb.ezorm.rdb.meta.RDBTableMetaData;
 import org.hsweb.ezorm.rdb.render.SqlAppender;
 import org.hsweb.ezorm.rdb.render.support.simple.SimpleInsertSqlRender;
 
@@ -8,6 +11,17 @@ import org.hsweb.ezorm.rdb.render.support.simple.SimpleInsertSqlRender;
  * @author zhouhao
  */
 public class InsertSqlBuilder extends SimpleInsertSqlRender {
+    @Override
+    public SQL render(RDBTableMetaData metaData, InsertParam param) {
+        RDBTableMetaData metaDataNew = metaData.clone();
+        metaDataNew.setDatabaseMetaData(metaData.getDatabaseMetaData());
+        metaDataNew.getColumns().stream()
+                .filter(column -> column.getName().contains("."))
+                .map(RDBColumnMetaData::getName)
+                .forEach(metaDataNew::removeColumn);
+        return super.render(metaDataNew, param);
+    }
+
     @Override
     protected SqlAppender getParamString(String paramName, RDBColumnMetaData rdbColumnMetaData) {
         return new SqlAppender().add("#{", paramName,

+ 13 - 0
hsweb-web-dao/hsweb-web-dao-mybatis/src/main/java/org/hsweb/web/mybatis/builder/UpdateSqlBuilder.java

@@ -1,6 +1,9 @@
 package org.hsweb.web.mybatis.builder;
 
+import org.hsweb.ezorm.core.param.UpdateParam;
+import org.hsweb.ezorm.rdb.executor.SQL;
 import org.hsweb.ezorm.rdb.meta.RDBColumnMetaData;
+import org.hsweb.ezorm.rdb.meta.RDBTableMetaData;
 import org.hsweb.ezorm.rdb.render.SqlAppender;
 import org.hsweb.ezorm.rdb.render.dialect.Dialect;
 import org.hsweb.ezorm.rdb.render.support.simple.SimpleUpdateSqlRender;
@@ -12,7 +15,17 @@ public class UpdateSqlBuilder extends SimpleUpdateSqlRender {
     public UpdateSqlBuilder(Dialect dialect) {
         super(dialect);
     }
+    @Override
+    public SQL render(RDBTableMetaData metaData, UpdateParam param) {
+        RDBTableMetaData metaDataNew = metaData.clone();
+        metaDataNew.setDatabaseMetaData(metaData.getDatabaseMetaData());
 
+        metaDataNew.getColumns().stream()
+                .filter(column -> column.getName().contains("."))
+                .map(RDBColumnMetaData::getName)
+                .forEach(metaDataNew::removeColumn);
+        return super.render(metaDataNew, param);
+    }
     @Override
     protected SqlAppender getParamString(String paramName, RDBColumnMetaData rdbColumnMetaData) {
         return new SqlAppender().add("#{", paramName,