String SQL_GET_EMPLOYEE_DETAILS = "SELECT getValueFromXml((Employee/LineData[EmployeeID=:employeeId]/Address)[1], empDetails.xmlValue) AS employeeNumber FROM EMPLOYEE emp JOIN EMPLOYEE_DETAILS empDetails ON empDetails.ID = emp.EMP_ID WHERE emp.ACCT_NUMBER = :empAccountCode AND emp.EMP_ID = :employeeId LIMIT 1";
List<String> empDetails = null;
try {
paramMap.put("employeeId", employeeId);
paramMap.put("empAccountCode", empAccountCode);
List<Map<String, Object>> records = NamedParameterJdbcTemplate.queryForList(SQL_GET_EMPLOYEE_DETAILS,paramMap);
empDetailsList = records.stream().map(rs -> { empDetails.add(String.valueOf(rs.get("EMPLOYEE_ADDRESS")));
return empDetails;
}).collect(Collectors.toList());
} catch (Exception e) {
log.error("Exception occurred while fetching employee details ", e);
}
Spring dao framework pushing key as employeeId] instead of employeeId. Actually its plain SQL query, calling a function by passing two values. First value is String holding part of XML data. Second value is whole xml data.
Expecting employeeId key to be supplied to SQL query instead of employeeId] (appending special character ])