diff --git a/wwjcloud-nest-v1/tools/java-to-nestjs-migration/generators/entity-generator.js b/wwjcloud-nest-v1/tools/java-to-nestjs-migration/generators/entity-generator.js index e39d2635..4c4d3875 100644 --- a/wwjcloud-nest-v1/tools/java-to-nestjs-migration/generators/entity-generator.js +++ b/wwjcloud-nest-v1/tools/java-to-nestjs-migration/generators/entity-generator.js @@ -76,15 +76,34 @@ ${fields} const decorators = []; // 实体装饰器 + // 修复:自动生成表名(nc_前缀 + 驼峰转下划线) if (javaEntity.tableName) { decorators.push(`@Entity('${javaEntity.tableName}')`); } else { - decorators.push('@Entity()'); + // 从Java类名生成表名:SysUser -> nc_sys_user + const tableName = this.generateTableName(javaEntity.className); + decorators.push(`@Entity('${tableName}')`); } return decorators.join('\n'); } + /** + * 生成表名:Java类名转数据库表名 + * 规则:nc_前缀 + 驼峰转下划线 + * 例如:SysUser -> nc_sys_user + */ + generateTableName(className) { + // 驼峰转下划线 + const underscoreName = className + .replace(/([A-Z])/g, '_$1') + .toLowerCase() + .replace(/^_/, ''); // 移除开头的下划线 + + // 添加nc_前缀(MyBatis-Plus配置的表前缀) + return `nc_${underscoreName}`; + } + /** * 生成字段 */ @@ -134,17 +153,10 @@ ${fields} return decorators.join('\n '); } - // 创建时间装饰器(优先判断) - if (field.fieldName === 'createdAt' || field.fieldName === 'createTime' || field.columnName === 'create_time') { - const dbColumnName = field.columnName || field.fieldName; - return `@CreateDateColumn({ name: '${dbColumnName}' })`; - } - - // 更新时间装饰器(优先判断) - if (field.fieldName === 'updatedAt' || field.fieldName === 'updateTime' || field.columnName === 'update_time') { - const dbColumnName = field.columnName || field.fieldName; - return `@UpdateDateColumn({ name: '${dbColumnName}' })`; - } + // ✅ 修复:Java使用Long类型存储秒级时间戳(int),不使用Date对象 + // 所有字段(包括时间字段)都使用普通@Column装饰器 + // Java: private Long createTime; -> MySQL: create_time int + // NestJS: @Column() createTime: number; // 列装饰器 const columnOptions = [];