与 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"
。)
我在尝试将 <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"
。)