Я пытаюсь написать rowMapper для запроса, который имеет два поля для выбора.
Запрос вернет список групп на основе уровня имени пользователя в БД, он даже вернет одну строку с dept -100 и пустую группу списка отделов и групп, чтобы получить правильный список или просто вернутьсписок.
запрос:
SELECT a.dept, TRIM(c.group_name)
FROM user_numbers a
LEFT OUTER JOIN department b ON b.number = a.dept
LEFT OUTER JOIN yard_sets2 c ON c.user_name = b.name
WHERE (a.user_name) = "test"
здесь код java:
private JdbcTemplate webJdbcTemplate;
public List<String> getStoreGroupsByUsername(final String username) {
String sql = "SELECT a.dept, TRIM(c.group_name) "
+ "FROM " + PREFIX + "user_numbers a "
+ "LEFT OUTER JOIN " + PREFIX + "department b ON b.number = a.dept "
+ "LEFT OUTER JOIN " + PREFIX + "yard_sets2 c ON c.user_name = b.name "
+ "WHERE (a.user_name) = ? ";
List<String> results = webJdbcTemplate.query(sql, new Object[]{username.toUpperCase()}, (rs, rownum) -> {
// SKIP departments when value is -100
if ("-100".equalsIgnoreCase(rs.getString("a.dept"))) {
return null;
} else {
return rs.getString("a.dept");
}
});
/* if(results.size() == 0) {
// get the other query
getStoreGroupsAndDeptNbrByUsername(username);
}*/
LOG.debug(results + "SAMAR");
return results.stream()
.filter(result -> result != null).collect(Collectors.toList());
}
вот ошибка, которую я получаю.кажется, что имя столбца неверно, но это не так. Если я скопирую запрос из сообщения об ошибке, он будет нормально работать на БД
2019-02-28 08:37:55,911 ERROR org.springframework.boot.web.servlet.support.ErrorPageFilter - Forwarding to error page from request [/rest/storegroup/username/test] due to exception [PreparedStatementCallback; uncategorized SQLException for SQL [SELECT a.dept, TRIM(c.group_name) FROM misc_db:user_numbers a LEFT OUTER JOIN misc_db:department b ON b.number = a.dept LEFT OUTER JOIN misc_db:yard_sets2 c ON c.user_name = b.name WHERE (a.user_name) = ? ]; SQL state [IX000]; error code [-79738]; No such column name; nested exception is java.sql.SQLException: No such column name]
org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [SELECT a.dept, TRIM(c.group_name) FROM misc_db:user_numbers a LEFT OUTER JOIN misc_db:department b ON b.number = a.dept LEFT OUTER JOIN misc_db:yard_sets2 c ON c.user_name = b.name WHERE (a.user_name) = ? ]; SQL state [IX000]; error code [-79738]; No such column name; nested exception is java.sql.SQLException: No such column name
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:89) ~[spring-jdbc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) ~[spring-jdbc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) ~[spring-jdbc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1402) ~[spring-jdbc-5.0.8.RELEASE.jar:5.0.8.RELEASE]