zhouhao 7 rokov pred
rodič
commit
103015d38e

+ 7 - 7
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormOperationService.java

@@ -67,7 +67,7 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
             List<T> list = query.setParam(paramEntity).list();
             return PagerResult.of(total, list);
         } catch (SQLException e) {
-            throw new DynamicFormException("selectPager fail", e);
+            throw new DynamicFormException("selectPager fail:" + e.getMessage(), e);
         }
 
     }
@@ -80,7 +80,7 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
             RDBQuery<T> query = table.createQuery();
             return query.setParam(paramEntity).list();
         } catch (SQLException e) {
-            throw new DynamicFormException("select fail", e);
+            throw new DynamicFormException("select fail:" + e.getMessage(), e);
         }
     }
 
@@ -93,7 +93,7 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
 
             return query.setParam(paramEntity).single();
         } catch (SQLException e) {
-            throw new DynamicFormException("selectSingle fail", e);
+            throw new DynamicFormException("selectSingle fail:" + e.getMessage(), e);
         }
     }
 
@@ -106,7 +106,7 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
 
             return query.setParam(paramEntity).total();
         } catch (SQLException e) {
-            throw new DynamicFormException("count fail", e);
+            throw new DynamicFormException("count fail:" + e.getMessage(), e);
         }
     }
 
@@ -121,7 +121,7 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
 
             return update.setParam(paramEntity).exec();
         } catch (SQLException e) {
-            throw new DynamicFormException("update fail", e);
+            throw new DynamicFormException("update fail:" + e.getMessage(), e);
         }
     }
 
@@ -132,7 +132,7 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
             Insert<T> insert = table.createInsert();
             insert.value(entity).exec();
         } catch (SQLException e) {
-            throw new DynamicFormException("insert fail", e);
+            throw new DynamicFormException("insert fail:" + e.getMessage(), e);
         }
     }
 
@@ -147,7 +147,7 @@ public class SimpleDynamicFormOperationService implements DynamicFormOperationSe
 
             return delete.setParam(paramEntity).exec();
         } catch (SQLException e) {
-            throw new DynamicFormException("delete fail", e);
+            throw new DynamicFormException("delete fail:" + e.getMessage(), e);
         }
     }
 }

+ 23 - 2
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-simple/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormService.java

@@ -3,6 +3,7 @@ package org.hswebframework.web.service.form.simple;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import jdk.nashorn.internal.scripts.JD;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.hswebframework.ezorm.core.Trigger;
 import org.hswebframework.ezorm.core.ValueConverter;
@@ -350,7 +351,7 @@ public class SimpleDynamicFormService extends GenericEntityService<DynamicFormEn
                 database.alterTable(metaData);
             }
         } catch (SQLException e) {
-            throw new RuntimeException(e);
+            throw new DynamicFormException("部署失败:" + e.getMessage(), e);
         }
     }
 
@@ -432,7 +433,7 @@ public class SimpleDynamicFormService extends GenericEntityService<DynamicFormEn
             columnMeta.setJdbcType(JDBCType.valueOf(column.getJdbcType()));
             columnMeta.setJavaType(getJavaType(column.getJavaType()));
             columnMeta.setProperties(column.getProperties() == null ? new HashMap<>() : column.getProperties());
-            columnMeta.setValidator(columnMeta.getValidator());
+//            columnMeta.setValidator(column.getValidator());
             if (StringUtils.isEmpty(column.getDataType())) {
                 Dialect dialect = database.getMeta().getDialect();
                 columnMeta.setDataType(dialect.buildDataType(columnMeta));
@@ -447,9 +448,29 @@ public class SimpleDynamicFormService extends GenericEntityService<DynamicFormEn
             metaData.addColumn(columnMeta);
         });
         customTableSetting(database, form, metaData);
+        //没有主键并且没有id字段
+        if (metaData.getColumns().stream().noneMatch(RDBColumnMetaData::isPrimaryKey) && metaData.findColumn("id") == null) {
+            RDBColumnMetaData primaryKey = createPrimaryKeyColumn();
+            Dialect dialect = database.getMeta().getDialect();
+            primaryKey.setDataType(dialect.buildDataType(primaryKey));
+            metaData.addColumn(primaryKey);
+        }
         return metaData;
     }
 
+    protected RDBColumnMetaData createPrimaryKeyColumn() {
+        RDBColumnMetaData id = new RDBColumnMetaData();
+        id.setName("id");
+        id.setJdbcType(JDBCType.VARCHAR);
+        id.setJavaType(String.class);
+        id.setLength(32);
+        id.setDefaultValue(IDGenerator.MD5::generate);
+        id.setComment("主键");
+        id.setPrimaryKey(true);
+        id.setNotNull(true);
+        return id;
+    }
+
     protected void customTableSetting(RDBDatabase database
             , DynamicFormEntity formEntity
             , RDBTableMetaData table) {

+ 1 - 8
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-starter/src/test/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormServiceTest.java

@@ -59,12 +59,6 @@ public class SimpleDynamicFormServiceTest extends SimpleWebApplicationTests {
                 "{\"target\":\"s_dyn_form\",\"alias\":\"form\",\"condition\":\"form.u_id=f_test.id\"}" +
                 "]");
 
-        DynamicFormColumnEntity column_id = entityFactory.newInstance(DynamicFormColumnEntity.class);
-        column_id.setColumnName("id");
-        column_id.setName("ID");
-        column_id.setJavaType("string");
-        column_id.setJdbcType(JDBCType.VARCHAR.getName());
-        column_id.setLength(32);
         DynamicFormColumnEntity column_name = entityFactory.newInstance(DynamicFormColumnEntity.class);
         column_name.setName("姓名");
         column_name.setColumnName("name");
@@ -84,7 +78,7 @@ public class SimpleDynamicFormServiceTest extends SimpleWebApplicationTests {
         DynamicFormColumnBindEntity bindEntity = new DynamicFormColumnBindEntity();
 
         bindEntity.setForm(form);
-        bindEntity.setColumns(Arrays.asList(column_id, column_name, column_age));
+        bindEntity.setColumns(Arrays.asList(column_name, column_age));
 
         String id = dynamicFormService.saveOrUpdate(bindEntity);
 
@@ -93,7 +87,6 @@ public class SimpleDynamicFormServiceTest extends SimpleWebApplicationTests {
 
         dynamicFormOperationService.insert(form.getId(), new HashMap<String, Object>() {
             {
-                put("id", id);
                 put("name", "张三");
                 put("age", 10);
             }