나는 select 절에 포함 된 쿼리가 있습니다는 자 NHibernate는 SQL 쿼리의 잘못된 결과를 반환
left outer join documents d2 on d1.original_doc = d2.id
가의가 DB에 내가이 행이 있다고 가정 해 봅시다 :
d1.id,
d1.title,
d1.original_doc,
d2.id,
d2.title
과에서를 절에서 : 첫 번째 행에 대해 ID를 TITLE의 ORIGINAL_DOC
1 Title1
2 Title2 1
, NHibernate에 돌아올 것이다 1 TITLE1, N ull, 1, 1 대신 Title1, Title1, null, null, null.
두 번째 행의 경우 2, Title2, 1, 1, Title1 대신 2, Title2, 1, 2, Title2를 반환합니다.
조인의 조건이 같기 때문에 세 번째와 네 번째 열에 다른 값이 없어야합니다. 무슨 일이 일어나고있는 것 같아요 조건에 의해 정의 된 행 대신에 동일한 d1 행이 d2로 조인됩니다.
이상한 부분 : .ShowSql()을 on으로 설정하고 쿼리를 Oracle Toad에 복사하여 붙여 넣으면 실제로 올바른 결과가 반환됩니다.
내가 어떤 아이디어를 가지고 = 그것은 Session.createSQLQuery (selectQuery) .List()누구나 VAR 데이터를 사용하여 NHibernate에 설정 결과를 얻고있다
?
감사합니다. 그 NHibernate 꽤 약한 것, 정확히 동일한 쿼리를 직면 할 때 DB 반환 할 다른 결과를 반환합니다. 나는 실수도하지 않겠지 만, 은밀하게 잘못된 결과를 돌려주는 것은 정말 나쁘다. 그리고 그것은 전혀 필요한 제한이 아닙니다. :/그것에 대해 생각할 때 이것은 분명히 버그입니다. – svinja
이것은 제 의견입니다. 원하는 경우 jira에 몇 가지 주석을 달 수 있습니다. "기능 향상"유형의 새로운 문제를 추가하는 것이 좋습니다. 그냥 jira에 정중하게, 어떤 사람들은 거기에 민감합니다 ... –
+1이 버그는 nhibernate에 대해 "버그가 아니며"이 버그가 결론을 이끌어내는 버그 ID를보고 해 주었고 같은 철자로 열 이름의 이름을 바꿔야합니다. 내 질문. –