diff --git a/gen/src/main/java/com/gitee/gen/gen/postgresql/PostgreSqlColumnSelector.java b/gen/src/main/java/com/gitee/gen/gen/postgresql/PostgreSqlColumnSelector.java index eca2baea2f4861bf3f491bc3e5cb6362e8e79ba9..5409c09c108083b72bd8919cfaf98d34a39368a4 100644 --- a/gen/src/main/java/com/gitee/gen/gen/postgresql/PostgreSqlColumnSelector.java +++ b/gen/src/main/java/com/gitee/gen/gen/postgresql/PostgreSqlColumnSelector.java @@ -3,6 +3,7 @@ package com.gitee.gen.gen.postgresql; import com.gitee.gen.gen.ColumnDefinition; import com.gitee.gen.gen.ColumnSelector; import com.gitee.gen.gen.GeneratorConfig; +import org.apache.commons.lang.StringUtils; import java.util.Map; import java.util.Set; @@ -34,7 +35,7 @@ public class PostgreSqlColumnSelector extends ColumnSelector { " INNER JOIN information_schema.COLUMNS C ON C.TABLE_NAME = pg_class.relname " + " AND C.COLUMN_NAME = pg_attribute.attname " + "WHERE " + - " pg_class.relname = '%s' " + + " pg_class.relname = '%s' and pg_constraint.contype = 'p' " + " AND pg_attribute.attnum > 0"; @Override @@ -71,6 +72,18 @@ public class PostgreSqlColumnSelector extends ColumnSelector { columnDefinition.setIsPk(isPk); String type = convertString(rowMap.get("TYPE")); + + // 如果是number + if (StringUtils.containsIgnoreCase(type, "numeric")) { + // 有精度则为decimal,否则是int + Object scaleCol = rowMap.get("SCALE"); + if (scaleCol == null) { + scaleCol = 0; + } + String scale = String.valueOf(scaleCol); + type = "0".equals(scale) ? "integer" : "decimal"; + } + columnDefinition.setType(SQL_TYPE_FORMATTER.format(type)); columnDefinition.setComment(convertString(rowMap.get("CMT")));