열에 별칭을 사용하면 오류가 발생합니다. 별칭이 없으면 everytinig는 훌륭하게 작동합니다. 그게 무슨 문제입니까? 이것은 간단한 예이지만 실제 프로젝트에서 더 많은 별칭을 사용하여 일부 비 엔티티 클래스에서 결과를 래핑해야하지만이 오류로 인해 수행 할 수는 없습니다. 어떻게 해결할 수 있을까요?열에 별칭을 사용하여 쿼리를 실행하면 오류가 발생합니다.
public List<Long> findAll(Long ownerId) {
String sql = "select id as myId from products where ownerId = "+ownerId;
SQLQuery query = getSession().createSQLQuery(sql);
return query.list();
}
오류 :
WARN [JDBCExceptionReporter:77] : SQL Error: 0, SQLState: S0022 ERROR [JDBCExceptionReporter:78] : Column 'id' not found.
(별칭없이) 사용 : (id 컬럼에 별명)
작동하지
public List<Long> findAll(Long ownerId) {
String sql = "select id from products where ownerId = "+ownerId;
SQLQuery query = getSession().createSQLQuery(sql);
return query.list();
}
매개 변수를 실제로 연결하고 있습니까? "SQL Injection" – gbn
@gbn -이 경우 'Long'외에 주입 할 수있는 것은 무엇입니까? ;) - 그러나 일반 SQL 쿼리를 수행 할 때는 언제나 생각해 보는 것이 좋습니다. – Thomas
@ 토마스 : OP가 SQL 주입에 대해 알지 못한다는 것을 보여줍니다. 문자열 값을 안전하게 처리하면 불일치가 발생합니다. 나중에 Long이 String이되는 것은 무엇입니까? – gbn