2017-12-15 15 views
0

나는 매년 기본을 기반으로 데이터를 가져 오기 위해 명명 된 쿼리를 작성하고 있습니다.명명 된 쿼리에서 매개 변수로 열 이름을 보내는 방법

쿼리

SELECT * FROM table1 
    WHERE ((year1 > 0) OR (year2> 0 OR (beyondYear2> 0))); 

쿼리는 잘 작동한다. JSP에서 나는 그 해를 선택할 것이므로 그 해에 레코드가로드되어야합니다. 위 쿼리는 모든 연도 범위의 데이터를로드합니다. 매번 쿼리를 작성하지 않으려면 매개 변수로 Column Name을 전달할 수있는 방법이 있습니까?

SELECT * FROM table1 
WHERE (:yearRange > 0); 

: yearRange : 매개 변수로.

답변

1

당신은 스위치로 매개 변수를 사용할 수 있습니다

SELECT * FROM table1 
    WHERE ((year1 > 0 AND :yearRange='year1') OR (year2> 0 AND :yearRange='year2' OR (beyondYear2> 0 AND :yearRange='beyondYear2'))); 
+0

을 나는 자바에서 것을 전송하려면 어떻게합니까? setString() 또는 setParameter()를 사용해야합니까? 이 부분을 이해하지 못했습니다. : yearRange = 'year1'' – Sam

+0

setParameter, 일반 쿼리 매개 변수 – Turo

+0

아니요. 작동하지 않습니다. 'SEVERE : 잘못된 열 이름 org.hibernate.exception.GenericJDBCException : 실행할 수 없습니다. 쿼리' – Sam