다중 역할 계정의 좌측메뉴 조회 SQL 오류 수정 (SFR-001 후속)

권한 신청·승인 워크플로(N:신설=추가부여)로 사용자가 AUTHOR_CODE를 2개 이상
갖게 되면, 레거시 eGov 표준 메뉴 쿼리(selectMainMenuHead/Left/LastMenuNo(Cnt))의
"= (서브쿼리)"가 다중 행을 반환해 Subquery returns more than 1 row로 500 오류가
발생했다(2FA/OTP 등록 직후 /mnt/main.do 진입 시 재현). 서브쿼리를 IN으로,
상위 SELECT에 DISTINCT를 추가해 다중 역할을 지원하도록 수정.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
infraurp 2026-07-28 11:14:30 +09:00
parent 462e55bcd5
commit 1288fc6396
2 changed files with 35 additions and 35 deletions

View File

@ -8,8 +8,8 @@
<typeAlias alias="comDefaultVO" type="egovframework.com.cmm.ComDefaultVO"/> <typeAlias alias="comDefaultVO" type="egovframework.com.cmm.ComDefaultVO"/>
<select id="menuManageDAO.selectMainMenuHead" parameterClass="MenuManageVO" resultClass="egovMap"> <select id="menuManageDAO.selectMainMenuHead" parameterClass="MenuManageVO" resultClass="egovMap">
<![CDATA[ <![CDATA[
SELECT SELECT DISTINCT
B.MENU_NO AS menuNo B.MENU_NO AS menuNo
, B.MENU_ORDR AS menuOrdr , B.MENU_ORDR AS menuOrdr
, B.MENU_NM AS menuNm , B.MENU_NM AS menuNm
@ -19,33 +19,33 @@
, B.RELATE_IMAGE_NM AS relateImageNm , B.RELATE_IMAGE_NM AS relateImageNm
, B.PROGRM_FILE_NM AS progrmFileNm , B.PROGRM_FILE_NM AS progrmFileNm
, (SELECT C.URL FROM COMTNPROGRMLIST C WHERE B.PROGRM_FILE_NM = C.PROGRM_FILE_NM) AS chkURL , (SELECT C.URL FROM COMTNPROGRMLIST C WHERE B.PROGRM_FILE_NM = C.PROGRM_FILE_NM) AS chkURL
FROM COMTNMENUCREATDTLS A, COMTNMENUINFO B FROM COMTNMENUCREATDTLS A, COMTNMENUINFO B
WHERE B.Menu_NO > 0 WHERE B.Menu_NO > 0
AND B.UPPER_MENU_NO = #menuNo# AND B.UPPER_MENU_NO = #menuNo#
AND A.MENU_NO = B.MENU_NO AND A.MENU_NO = B.MENU_NO
AND A.AUTHOR_CODE = (SELECT C.AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS C AND A.AUTHOR_CODE IN (SELECT C.AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS C
WHERE C.SCRTY_DTRMN_TRGET_ID = #tmpUniqId#) WHERE C.SCRTY_DTRMN_TRGET_ID = #tmpUniqId#)
ORDER BY MENU_ORDR ORDER BY MENU_ORDR
]]> ]]>
</select> </select>
<select id="menuManageDAO.selectMainMenuLeft" parameterClass="MenuManageVO" resultClass="egovMap"> <select id="menuManageDAO.selectMainMenuLeft" parameterClass="MenuManageVO" resultClass="egovMap">
/* menuManageDAO.selectMainMenuLeft */ /* menuManageDAO.selectMainMenuLeft */
<![CDATA[ <![CDATA[
SELECT SELECT DISTINCT
B.MENU_NO AS menuNo B.MENU_NO AS menuNo
, B.MENU_ORDR AS menuOrdr , B.MENU_ORDR AS menuOrdr
, B.MENU_NM AS menuNm , B.MENU_NM AS menuNm
, B.UPPER_MENU_NO AS upperMenuId , B.UPPER_MENU_NO AS upperMenuId
, B.RELATE_IMAGE_PATH AS relateImagePath , B.RELATE_IMAGE_PATH AS relateImagePath
, B.RELATE_IMAGE_NM AS relateImageNm , B.RELATE_IMAGE_NM AS relateImageNm
, (SELECT C.URL FROM COMTNPROGRMLIST C WHERE B.PROGRM_FILE_NM = C.PROGRM_FILE_NM) AS chkURL , (SELECT C.URL FROM COMTNPROGRMLIST C WHERE B.PROGRM_FILE_NM = C.PROGRM_FILE_NM) AS chkURL
FROM COMTNMENUCREATDTLS A, COMTNMENUINFO B FROM COMTNMENUCREATDTLS A, COMTNMENUINFO B
WHERE A.MENU_NO = B.MENU_NO WHERE A.MENU_NO = B.MENU_NO
AND A.AUTHOR_CODE = (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS AND A.AUTHOR_CODE IN (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
WHERE SCRTY_DTRMN_TRGET_ID = #tmpUniqId#) WHERE SCRTY_DTRMN_TRGET_ID = #tmpUniqId#)
ORDER BY B.MENU_ORDR ORDER BY B.MENU_ORDR
]]> ]]>
</select> </select>
<select id="menuManageDAO.selectLastMenuURL" parameterClass="MenuManageVO" resultClass="String"> <select id="menuManageDAO.selectLastMenuURL" parameterClass="MenuManageVO" resultClass="String">
@ -67,24 +67,24 @@
(select MIN(MENU_ORDR) (select MIN(MENU_ORDR)
from COMTNMENUCREATDTLS A, COMTNMENUINFO B from COMTNMENUCREATDTLS A, COMTNMENUINFO B
where A.MENU_NO = B.MENU_NO where A.MENU_NO = B.MENU_NO
AND A.AUTHOR_CODE = (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS AND A.AUTHOR_CODE IN (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
WHERE SCRTY_DTRMN_TRGET_ID = #tempValue#) WHERE SCRTY_DTRMN_TRGET_ID = #tempValue#)
AND B.UPPER_MENU_NO = #menuNo#) AND B.UPPER_MENU_NO = #menuNo#)
]]> ]]>
</select> </select>
<select id="menuManageDAO.selectLastMenuNoCnt" parameterClass="MenuManageVO" resultClass="int"> <select id="menuManageDAO.selectLastMenuNoCnt" parameterClass="MenuManageVO" resultClass="int">
<![CDATA[ <![CDATA[
select count(MENU_NO) select count(MENU_NO)
from COMTNMENUINFO from COMTNMENUINFO
where UPPER_MENU_NO = #menuNo# where UPPER_MENU_NO = #menuNo#
and MENU_ORDR = and MENU_ORDR =
(select MIN(MENU_ORDR) (select MIN(MENU_ORDR)
from COMTNMENUCREATDTLS A, COMTNMENUINFO B from COMTNMENUCREATDTLS A, COMTNMENUINFO B
where A.MENU_NO = B.MENU_NO where A.MENU_NO = B.MENU_NO
AND A.AUTHOR_CODE = (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS AND A.AUTHOR_CODE IN (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
WHERE SCRTY_DTRMN_TRGET_ID = #tempValue#) WHERE SCRTY_DTRMN_TRGET_ID = #tempValue#)
AND B.UPPER_MENU_NO = #menuNo#) AND B.UPPER_MENU_NO = #menuNo#)
]]> ]]>
</select> </select>
</sqlMap> </sqlMap>

View File

@ -8,8 +8,8 @@
<typeAlias alias="comDefaultVO" type="egovframework.com.cmm.ComDefaultVO"/> <typeAlias alias="comDefaultVO" type="egovframework.com.cmm.ComDefaultVO"/>
<select id="menuManageDAO.selectMainMenuHead" parameterClass="MenuManageVO" resultClass="egovMap"> <select id="menuManageDAO.selectMainMenuHead" parameterClass="MenuManageVO" resultClass="egovMap">
<![CDATA[ <![CDATA[
SELECT SELECT DISTINCT
B.MENU_NO AS "menuNo" B.MENU_NO AS "menuNo"
, B.MENU_ORDR AS "menuOrdr" , B.MENU_ORDR AS "menuOrdr"
, B.MENU_NM AS "menuNm" , B.MENU_NM AS "menuNm"
@ -19,32 +19,32 @@
, B.RELATE_IMAGE_NM AS "relateImageNm" , B.RELATE_IMAGE_NM AS "relateImageNm"
, B.PROGRM_FILE_NM AS "progrmFileNm" , B.PROGRM_FILE_NM AS "progrmFileNm"
, (SELECT C.URL FROM COMTNPROGRMLIST C WHERE B.PROGRM_FILE_NM = C.PROGRM_FILE_NM) AS "chkURL" , (SELECT C.URL FROM COMTNPROGRMLIST C WHERE B.PROGRM_FILE_NM = C.PROGRM_FILE_NM) AS "chkURL"
FROM COMTNMENUCREATDTLS A, COMTNMENUINFO B FROM COMTNMENUCREATDTLS A, COMTNMENUINFO B
WHERE B.Menu_NO > 0 WHERE B.Menu_NO > 0
AND B.UPPER_MENU_NO = #menuNo# AND B.UPPER_MENU_NO = #menuNo#
AND A.MENU_NO = B.MENU_NO AND A.MENU_NO = B.MENU_NO
AND A.AUTHOR_CODE = (SELECT C.AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS C AND A.AUTHOR_CODE IN (SELECT C.AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS C
WHERE C.SCRTY_DTRMN_TRGET_ID = #tmpUniqId#) WHERE C.SCRTY_DTRMN_TRGET_ID = #tmpUniqId#)
ORDER BY MENU_ORDR ORDER BY MENU_ORDR
]]> ]]>
</select> </select>
<select id="menuManageDAO.selectMainMenuLeft" parameterClass="MenuManageVO" resultClass="egovMap"> <select id="menuManageDAO.selectMainMenuLeft" parameterClass="MenuManageVO" resultClass="egovMap">
<![CDATA[ <![CDATA[
SELECT SELECT DISTINCT
B.MENU_NO AS "menuNo" B.MENU_NO AS "menuNo"
, B.MENU_ORDR AS "menuOrdr" , B.MENU_ORDR AS "menuOrdr"
, B.MENU_NM AS "menuNm" , B.MENU_NM AS "menuNm"
, B.UPPER_MENU_NO AS "upperMenuId" , B.UPPER_MENU_NO AS "upperMenuId"
, B.RELATE_IMAGE_PATH AS "relateImagePath" , B.RELATE_IMAGE_PATH AS "relateImagePath"
, B.RELATE_IMAGE_NM AS "relateImageNm" , B.RELATE_IMAGE_NM AS "relateImageNm"
, (SELECT C.URL FROM COMTNPROGRMLIST C WHERE B.PROGRM_FILE_NM = C.PROGRM_FILE_NM) AS "chkURL" , (SELECT C.URL FROM COMTNPROGRMLIST C WHERE B.PROGRM_FILE_NM = C.PROGRM_FILE_NM) AS "chkURL"
FROM COMTNMENUCREATDTLS A, COMTNMENUINFO B FROM COMTNMENUCREATDTLS A, COMTNMENUINFO B
WHERE A.MENU_NO = B.MENU_NO WHERE A.MENU_NO = B.MENU_NO
AND A.AUTHOR_CODE = (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS AND A.AUTHOR_CODE IN (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
WHERE SCRTY_DTRMN_TRGET_ID = #tmpUniqId#) WHERE SCRTY_DTRMN_TRGET_ID = #tmpUniqId#)
ORDER BY B.MENU_ORDR ORDER BY B.MENU_ORDR
]]> ]]>
</select> </select>
<select id="menuManageDAO.selectLastMenuURL" parameterClass="MenuManageVO" resultClass="String"> <select id="menuManageDAO.selectLastMenuURL" parameterClass="MenuManageVO" resultClass="String">
@ -66,7 +66,7 @@
(select MIN(MENU_ORDR) (select MIN(MENU_ORDR)
from COMTNMENUCREATDTLS A, COMTNMENUINFO B from COMTNMENUCREATDTLS A, COMTNMENUINFO B
where A.MENU_NO = B.MENU_NO where A.MENU_NO = B.MENU_NO
AND A.AUTHOR_CODE = (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS AND A.AUTHOR_CODE IN (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
WHERE SCRTY_DTRMN_TRGET_ID = #tempValue#) WHERE SCRTY_DTRMN_TRGET_ID = #tempValue#)
AND B.UPPER_MENU_NO = #menuNo#) AND B.UPPER_MENU_NO = #menuNo#)
]]> ]]>
@ -81,7 +81,7 @@
(select MIN(MENU_ORDR) (select MIN(MENU_ORDR)
from COMTNMENUCREATDTLS A, COMTNMENUINFO B from COMTNMENUCREATDTLS A, COMTNMENUINFO B
where A.MENU_NO = B.MENU_NO where A.MENU_NO = B.MENU_NO
AND A.AUTHOR_CODE = (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS AND A.AUTHOR_CODE IN (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
WHERE SCRTY_DTRMN_TRGET_ID = #tempValue#) WHERE SCRTY_DTRMN_TRGET_ID = #tempValue#)
AND B.UPPER_MENU_NO = #menuNo#) AND B.UPPER_MENU_NO = #menuNo#)
]]> ]]>