自动生成代码中出现部分未添加的字段

Java 已结 1 1936
SophieRoyal
SophieRoyal 剑者 2020-04-18 09:05

一、该问题的重现步骤是什么?

1. 后端test自动生成代码CodeGenerator.java,配置了各项参数,字段这里去除了create_dept,status两个字段。

public static String[] SUPER_ENTITY_COLUMNS = {"id", "create_time", "create_user", "update_time", "update_user", "is_deleted"};

2. 然后自动生成了后台,点击查询页面的时候报错了。提示没有create_dept字段。这个是怎么产生的?

### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column 'create_dept' in 'field list' ### The error may exist in org/springblade/xxxx/mapper/xxxMapper.java (best guess) ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### SQL: SELECT id, ...create_dept, ... status, is_deleted FROM xxx WHERE is_deleted = 0 LIMIT ?,? ### Cause: java.sql.SQLSyntaxErrorException: Unknown column 'create_dept' in 'field list' ; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Unknown column 'create_dept' in 'field list'

二、你期待的结果是什么?实际看到的又是什么?

这种自动生成的代码怎么看包含的列?通用查询映射结果也没有该列。


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

采用springboot的框架,win10


四、请提供详细的错误堆栈信息,这很重要。

### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column 'create_dept' in 'field list' ### The error may exist in org/springblade/xxxx/mapper/xxxMapper.java (best guess) ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### SQL: SELECT id, ...create_dept, ... status, is_deleted FROM xxx WHERE is_deleted = 0 LIMIT ?,? ### Cause: java.sql.SQLSyntaxErrorException: Unknown column 'create_dept' in 'field list' ; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Unknown column 'create_dept' in 'field list'


五、若有更多详细信息,请在下面提供。



1条回答
  •  zhx1994
    zhx1994 (最佳回答者)
    2020-04-18 13:27

    代码生成器的生成的代码实体会继承BaseEntity或者TenantEntity,表结构需要包含这些实体的基础字段。


    public class BaseEntity implements Serializable {

    /**

    * 主键id

    */

    @JsonSerialize(using = ToStringSerializer.class)

    @ApiModelProperty(value = "主键id")

    @TableId(value = "id", type = IdType.ASSIGN_ID)

    private Long id;


    /**

    * 创建人

    */

    @JsonSerialize(using = ToStringSerializer.class)

    @ApiModelProperty(value = "创建人")

    private Long createUser;


    /**

    * 创建部门

    */

    @JsonSerialize(using = ToStringSerializer.class)

    @ApiModelProperty(value = "创建部门")

    private Long createDept;


    /**

    * 创建时间

    */

    @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)

    @JsonFormat(pattern = DateUtil.PATTERN_DATETIME)

    @ApiModelProperty(value = "创建时间")

    private Date createTime;


    /**

    * 更新人

    */

    @JsonSerialize(using = ToStringSerializer.class)

    @ApiModelProperty(value = "更新人")

    private Long updateUser;


    /**

    * 更新时间

    */

    @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)

    @JsonFormat(pattern = DateUtil.PATTERN_DATETIME)

    @ApiModelProperty(value = "更新时间")

    private Date updateTime;


    /**

    * 状态[1:正常]

    */

    @ApiModelProperty(value = "业务状态")

    private Integer status;


    /**

    * 状态[0:未删除,1:删除]

    */

    @TableLogic

    @ApiModelProperty(value = "是否已删除")

    private Integer isDeleted;

    }


    public class TenantEntity extends BaseEntity {


    /**

    * 租户ID

    */

    @ApiModelProperty(value = "租户ID")

    private String tenantId;


    }


    作者追问:2020-04-18 13:27

    也就是说这些字段如果要用就必须要所有的字段么?不用就自己写字段

    0 讨论(1)
提交回复