2011-11-03 2 views
0

다음은 HQL 쿼리입니다.HQL 쿼리 관련 문제

delete from Table t 
where 
    (t.column1=:value1 and t.column2=:value2) 
    or (t.column3=:value3 and t.column4=:value4) 

이 쿼리를 실행하면 다음 SQL이 잘못 생성됩니다.

delete from Table t 
where 
    t.column1=? 
    and t.column2=? 
    or t.column3=? 
    and t.column4=? 

잘못된 결과를주는 생성 된 SQL에서 괄호가 제거되었습니다.

도와주세요.

답변

0

은 구조화 된 솔루션이 아니라 일을 진행하는 것입니다. 유 PLZ 시도 할 수 있습니다이

delete from Table t 
    where 
     1=1 AND (t.column1=:value1 and t.column2=:value2) 
     or (t.column3=:value3 and t.column4=:value4) 

내가 최대 절전 모드 momenet에 설치 한 DNT,하지만 난

NHibernate HQL logic problem

(난 그렇게 생각)이 문제가 나에게 와서 난 이런 식으로 해결 한 번 생각 https://hibernate.onjira.com/browse/HHH-550

이 링크들을 살펴본 후, 나는 Hibernate가이 쿼리들을 완벽하게 번역하고 있다는 것을 알아 냈다. "AND"가 우선 순위가 높으므로 쿼리 결과가 전혀 영향을 미치지 않아야합니다 ... 다른 이유가있을 수 있습니다.

+0

Nopes. 작동하지 않습니다. : – ashishjmeshram

+0

위의 링크를 통해 @Ashish가 도움이 될 수 있습니다. – Zohaib

+0

@Ashish SQL, qith 괄호로 쿼리를 테스트했는데 괄호없이 동일한 결과를 얻을 수 있습니다. 위 링크의 설명은 완벽합니다. – Zohaib