You need to enable JavaScript to run this app. Sparx EA 文档生成关联t_package查询组件所属包报nvarchar转int错误
优惠活动
大模型
产品
解决方案
定价
更多

Sparx EA 文档生成关联t_package查询组件所属包报nvarchar转int错误

修复方案

根因说明

报错来自EA文档生成的SQL预处理逻辑:SQL Scratch Pad执行的是你提交的原生SQL,没有额外加工;但文档生成功能会自动根据模板绑定上下文、查询涉及的表,拼接隐式的过滤条件,一旦类型不匹配就会触发转换错误。
你新增t_package表后,EA默认识别到包表关联,会自动把当前上下文的包EA_GUID(nvarchar类型)作为参数,强制和t_package的int类型Package_ID做匹配,正好触发nvarchar转int的报错。

具体操作

  • 替换t_package的别名
    不用p、p1这类以p开头的别名,换成和EA默认规则无关的别名(比如pkg),同时把Note的别名改回之前正常运行的Note.Formatted,避免横杠引发的解析歧义,修改后的SQL如下:
    SELECT o1.Name as Component, pkg.Name as "Part.of", o1.Note as "Note.Formatted" 
    from t_diagramobjects do1, t_diagram d1, t_object o1, t_package pkg
    where do1.diagram_id = d1.diagram_id
    and o1.Package_ID = pkg.Package_ID 
    and do1.object_id = o1.object_id
    and d1.ea_guid = #DIAGRAMID#
    and o1.Object_type = 'Component'
    order by "Part.of"
    
  • 确认SQL片段绑定位置
    确保这个SQL片段是绑定到模板的「图(Diagram)」元素下,而非「包(Package)」元素下:如果绑定在包上下文,EA会自动传入包GUID作为nvarchar参数,即使改了别名也可能触发隐式关联错误。
  • 兼容性兜底写法
    若上述修改后仍报错,可改成显式内连接的写法,彻底绕过EA的隐式表关联识别逻辑:
    SELECT o1.Name as Component, pkg.Name as "Part.of", o1.Note as "Note.Formatted" 
    from ((t_diagramobjects do1 
      INNER JOIN t_diagram d1 ON do1.diagram_id = d1.diagram_id)
      INNER JOIN t_object o1 ON do1.object_id = o1.object_id)
      INNER JOIN t_package pkg ON o1.Package_ID = pkg.Package_ID
    where d1.ea_guid = #DIAGRAMID#
    and o1.Object_type = 'Component'
    order by pkg.Name
    

内容的提问来源于stack exchange,提问作者Tomas Svorc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 03:57:03