Skip to content

🐛 fix(generator): 修正遗留实体上下文自增标志 #173

Description

@ZhaoXingPeng

版本与环境

  • 受影响提交:752e11e(当前代码生成依赖链)
  • 运行时:Windows,Python 3.10+,遗留 TemplateContext.build_entity_context() 入口
  • 安装方式:仓库 .venv / PYTHONPATH=src

问题与预期行为

TemplateContext.build_entity_context() 返回的 hasAutoIncrement 当前使用 any(col.primary_key for col in table.columns) 计算。普通非自增主键因此被标记为自增;真正的自增列若没有主键标记则可能被漏报。该字段会被旧版实体模板和外部调用方用于决定是否生成数据库键回填相关配置。

预期行为:hasAutoIncrement 只反映 ColumnInfo.auto_increment,与新 TemplateContextBuilder 的列元数据语义一致。

最小复现

PYTHONPATH=src python -c "from dbjavagenix.core.models import ColumnInfo,TableInfo,GenerationConfig; from dbjavagenix.generator.mustache_engine import TemplateContext; c=GenerationConfig(output_dir='out',package_name='com.example'); t=TableInfo(name='account',schema='public',columns=[ColumnInfo(name='id',data_type='BIGINT',java_type='Long',primary_key=True,auto_increment=False)]); print(TemplateContext.build_entity_context(t,c)['hasAutoIncrement'])"

修复前输出 True,但该列并非自增。

验收标准

  • 只有 auto_increment=True 的列会使 hasAutoIncrement=True。
  • 普通主键、无主键和非主键自增列分别得到准确布尔值。
  • 现有遗留上下文字段和实体列映射保持不变。
  • 相关单元测试、完整单元测试和 Ruff 检查通过。

非目标、风险与安全

本 Issue 不删除遗留入口、不修改新模板上下文、不改变数据库 introspection 或 SQL,也不涉及凭据。风险仅为纠正一个此前错误的派生标志;可通过回滚关联提交恢复旧行为。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions