与 columnPrefix 的关联给出 SQLException 无效的列名

Association with columnPrefix giving SQLException invalid column name

我在尝试将 <association> 标签与 columnPrefix 一起使用时收到 SQLException: invalid column name。例如

示例结果映射:

<resultMap id="foo" type="Foo">
  <result column="col1" property="col1"/>
</resultMap>

<resultMap ...>
  <association property="myFoo" 
               notNullColumn="some_id"
               resultMap="foo"
               columnPrefix="BAR_"/>
</resultMap>

示例SQL:

select some_id, BAR_col1, ... from (someTables)
                ^^^^--prefixed columns...

如果我取消 columnPrefix 并制作一个 foo 的自定义结果图,其中每个列都嵌入了 bar_,它就可以工作。这是怎么回事?

问题出在 notNullColumn 上!它必须遵循两条规则:

  • 在 SQL 语句中,列别名必须以列前缀开头(因此 select BAR_some_id ...),即使它不是关联结果映射的一部分(foo,在我的案件)。
  • notNullColumn 声明不应包含前缀。 (所以notNullColumn="BAR_some_id"是错误的,必须是notNullColumn="some_id"。)