2014-01-17 4 views
2

여기에있는 것과 비슷한 (또는 정확히 같은) 문제가 있습니다 : How to map query for iBATIS with parameterized column in select clause? 그러나 주어진 답은 저에게 맞지 않는 것 같습니다.Ibatis Query의 매개 변수화 된 열이 처음으로 작동하고 두 번째 호출이 실패합니다

<typeAlias alias="resultado" type="java.lang.String"/> 
<typeAlias alias="parametro" type="java.util.Map"/> 

<select id="getValorVariable" resultClass="resultado" parameterClass="parametro"> 
    SELECT $campo$ FROM $tabla$ 
    WHERE $campoClave$ = #valorClave# 
</select> 

는 선택을 실행하는 첫 번째 시간, 그것은 작동합니다
나는 다음 있습니다. $ campo $의 값은 'CIF'입니다. 두 번째로 실행하면 'FECHA'값을 가져야하지만 'CIF'는 유지됩니다. select를 호출하는 함수에서 맵과 해당 값을 확인하고 올바른 값을 갖습니다.

아이디어가 있으십니까? 어떤 도움을 주셔서 감사합니다.

답변

2

iBatis가 param 값을 제외한 전체 쿼리를 사전 컴파일하기 때문에이 문제가 발생합니다. 그것들은 쿼리가 실행될 때 동적으로 추가됩니다. 따라서 처음으로 쿼리가 실행되면 SELECT 문에 열 이름이 미리 컴파일됩니다.

당신의 <select> 태그에

remapResults="true" 

를 추가합니다.

은 다음과 같이 읽어야

<select id="getValorVariable" resultClass="resultado" parameterClass="parametro" remapResults="true"> 

또한, 당신의 <sqlMapConfig><settings> 태그에 이것을 추가 :

statementCachingEnabled="false" 
+0

아차는 .. 그냥이 잰 17 것을보고! –

+0

나는이 문제를 가지고있다. 답변을 주셔서 대단히 감사합니다 !!!! –