컬럼에 as 선언 시 쿼리가 동작하지 않습니다.
- 작성자 :
- j**t
- 작성일 :
- 2024-10-28 13:55:19
- 조회수 :
- 79
- 구분 :
- 실행환경 / 3.9
- 진행상태 :
- 완료
Q
안녕하세요.
쿼리를 하나 추가했습니다. 어려운 쿼리는 아닙니다.
예시를 들면 아래와 같습니다.
<select id="findTmplatNm" resultType="ComMap">
select
test1
test2
test3||test4 AS "testName"
FROM test_table
</select>
|| 또는 concat 같은 문자열 합치는 기능을 사용 시 mybatis가 동작하지 않습니다.
이 증상은 운영 환경에서만 발생합니다.
테스트 및 실제 운영서버에서 DB툴을 통해 쿼리를 실행하면 문제 없이 동작합니다.
Tomcat에 war를 적용 시 쿼리는 실행하지 않으며 그 어떤 에러 표시도 발생하지 않습니다.
익셉션 처리를 해도 동일합니다.
테스트 운영 둘 다 Tomcat9에 java11을 사용하는 동일 환경입니다.
위 쿼리에서 alias부분을 test3 AS "testName"처럼 선언하면 정상적으로 출력하는 것을 확인했습니다.
에러 및 그 어떤 결과에 대한 리턴이 발생하지 않기 때문에 어떤 문제인지 파악조차 힘듭니다.
오직 tomcat에 적용 시에만 그 어떤 동작도 하지 않습니다.
아래는 기타 설정 관련된 내용을 정리했습니다.
===========설정 관련===========
※DB 관련
Globals.DriverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
Globals.Url=jdbc:oracle:thin:@IP:포트:ora11g
※mybatis xml 설정
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
※resultType 정보(JAVA)
public class ComMap extends ListOrderedMap {
/**
* serialVersionUID
*/
private static final long serialVersionUID = -1818046954215731861L;
public Object put(Object key, Object value){
return super.put(((String)key).toLowerCase(), value);
}
}
===========설정 관련===========
기존에 운영하던 소스임으로 개발 중인 시스템이 아닙니다.
정상 동작하는 시스템이며 쿼리 하나를 추가하는 과정에서 발생했습니다.
이런 경우는 처음이라 아무리 찾아도 VO별도 선언 관련된 내용이 대부분입니다.
이 또한 동작은 하지 않습니다.
로그를 통해 쿼리 자체가 실행되지 않음을 확인했습니다.
확인 후 답변 부탁드립니다.
쿼리를 하나 추가했습니다. 어려운 쿼리는 아닙니다.
예시를 들면 아래와 같습니다.
<select id="findTmplatNm" resultType="ComMap">
select
test1
test2
test3||test4 AS "testName"
FROM test_table
</select>
|| 또는 concat 같은 문자열 합치는 기능을 사용 시 mybatis가 동작하지 않습니다.
이 증상은 운영 환경에서만 발생합니다.
테스트 및 실제 운영서버에서 DB툴을 통해 쿼리를 실행하면 문제 없이 동작합니다.
Tomcat에 war를 적용 시 쿼리는 실행하지 않으며 그 어떤 에러 표시도 발생하지 않습니다.
익셉션 처리를 해도 동일합니다.
테스트 운영 둘 다 Tomcat9에 java11을 사용하는 동일 환경입니다.
위 쿼리에서 alias부분을 test3 AS "testName"처럼 선언하면 정상적으로 출력하는 것을 확인했습니다.
에러 및 그 어떤 결과에 대한 리턴이 발생하지 않기 때문에 어떤 문제인지 파악조차 힘듭니다.
오직 tomcat에 적용 시에만 그 어떤 동작도 하지 않습니다.
아래는 기타 설정 관련된 내용을 정리했습니다.
===========설정 관련===========
※DB 관련
Globals.DriverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
Globals.Url=jdbc:oracle:thin:@IP:포트:ora11g
※mybatis xml 설정
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
※resultType 정보(JAVA)
public class ComMap extends ListOrderedMap {
/**
* serialVersionUID
*/
private static final long serialVersionUID = -1818046954215731861L;
public Object put(Object key, Object value){
return super.put(((String)key).toLowerCase(), value);
}
}
===========설정 관련===========
기존에 운영하던 소스임으로 개발 중인 시스템이 아닙니다.
정상 동작하는 시스템이며 쿼리 하나를 추가하는 과정에서 발생했습니다.
이런 경우는 처음이라 아무리 찾아도 VO별도 선언 관련된 내용이 대부분입니다.
이 또한 동작은 하지 않습니다.
로그를 통해 쿼리 자체가 실행되지 않음을 확인했습니다.
확인 후 답변 부탁드립니다.
환경정보
-
- OS 정보 : rocky linux9
- 표준프레임워크 버전 : 3.9.0
- JDK(JRE) 정보 : 11
- WAS 정보 : TOMCAT9
- DB 정보 : oracle11g
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크 센터입니다.
기재하신 내용이 제한적이기 때문에
구체적인 문제 발생 원인을 알 수 없으나
몇 가지 방식으로 문제 원인을 추정해 볼 수 있습니다.
테스트 및 DB 툴을 이용하여 쿼리를 테스트하는 환경과
어플리케이션이 실제 서비스되고 있는 운영 환경의
버전 및 구성의 차이로 인한 문제 발생일 수 있기 때문에
커넥션 드라이버 등의 구성등 테스트서버와 운영서버 환경을 면밀히 비교하여
자세히 확인해 볼 필요가 있을듯 합니다.
war로 묶어서 배포하는 경우
톰캣에 캐시 등이 남아서 의도한대로 동작하지 않을 수 있으므로
톰캣의 캐시를 비운 후 서비스를 구동시켜 보시기 바랍니다.
감사합니다.
표준프레임워크 센터입니다.
기재하신 내용이 제한적이기 때문에
구체적인 문제 발생 원인을 알 수 없으나
몇 가지 방식으로 문제 원인을 추정해 볼 수 있습니다.
테스트 및 DB 툴을 이용하여 쿼리를 테스트하는 환경과
어플리케이션이 실제 서비스되고 있는 운영 환경의
버전 및 구성의 차이로 인한 문제 발생일 수 있기 때문에
커넥션 드라이버 등의 구성등 테스트서버와 운영서버 환경을 면밀히 비교하여
자세히 확인해 볼 필요가 있을듯 합니다.
war로 묶어서 배포하는 경우
톰캣에 캐시 등이 남아서 의도한대로 동작하지 않을 수 있으므로
톰캣의 캐시를 비운 후 서비스를 구동시켜 보시기 바랍니다.
감사합니다.