최대 절전 모드 쿼리를 작성하려고 시도했지만 서버를 통해 최대 절전 모드 쿼리를 생성 할 수 있었지만 매개 변수화 된 쿼리의 매개 변수가 올바르게 바인딩되지 않았습니다. 즉, 23을 바인딩 할 경우 매개 변수 1이지만 매개 변수 3에 바인딩됩니다.Hibernate 쿼리 매개 변수 바인딩이 잘못되었습니다.
왜 이런 일이 발생하는지 알고 싶습니다. 이 문제의 근본 원인을 확인하기 위해 확인해야하는 오류 지점은 무엇이되어야합니까?
EDIT (쿼리가 여기에없는 이유는?)
최대 절전 모드 쿼리 복잡한 일이며, 내가 여기를 게시하는 것은 가능하지 않다. 그래서 제 질문은 일반적인 질문입니다. 다른 사람들이이 문제에 직면했을 때 hibernate가 에러를 던지지 않고 쿼리가 성공적으로 생성되었지만 잘못된 데이터를 잘못된 매개 변수에 바인딩하고 있다는 것을 알고 싶었습니다.
내가 예를 통해 대략적인 아이디어를 제공하려고합니다 -> 당신은 쓰기 예 :
criteria.createAlias("D.A", "a", CriteriaSpecification.LEFT_JOIN, Restrictions.eq("a.delIndc", false));
criteria.createAlias("A.B", "ab", CriteriaSpecification.LEFT_JOIN,
Restrictions.sqlRestriction("sqlQuery"));
criteria.createAlias("ab.c", "abc", CriteriaSpecification.LEFT_JOIN, Restrictions.eq("c.dataEntry", "Star Wars"));
criteria.createAlias("abc.f", "f", CriteriaSpecification.LEFT_JOIN, Restrictions.eq("f.dataExit", "Star Trek"));
를 쿼리는 (오류가 발생하지) 서버에서 성공적으로 생성되지만를하는 동안 점점 매개 변수 바인딩 :
2017-12-09 12:09:21,396 TRACE [org.hibernate.jdbc.AbstractBatcher] (pool-14-thread-2) preparing statement
2017-12-09 12:09:21,396 TRACE [org.hibernate.type.BooleanType] (pool-14-thread-2) binding 'false' to parameter: 1
2017-12-09 12:09:21,396 TRACE [org.hibernate.type.BooleanType] (pool-14-thread-2) binding 'Star Trek' to parameter: 2
2017-12-09 12:09:21,396 TRACE [org.hibernate.type.BooleanType] (pool-14-thread-2) binding 'Star Wars' to parameter: 3
을 그래서 대신 매개 변수를 잘못 '스타 워즈'2 매개 변수, 그것은 점점 바인딩 바인딩의 3
간단히 말해서 왜 이런 일이 일어날 지 알고 싶습니다. 이 근본 원인을 찾기 위해 내가해야 할 수표는 무엇입니까? 또한이 문제에 직면 한 경우 문제를 발견 한 방법과 문제를 어떻게 해결 했습니까?
희망 사항을 통해 내 검색어가 더욱 명확 해집니다. 이와 관련하여 더 많은 정보가 필요하시면 도와 주시고 알려주십시오.
이 매개 변수를 사용하여 코드를 제공하는 POJO/모델 클래스에 속성의 이름을 수정했을 수 있습니다 가능성을 될 수있는 query.There에 전달할 값을 제공합니다. – amir110
@Zeromus : 쿼리를 업데이트했습니다. 이것을 봐주세요. –
@ amir110 쿼리를 업데이트했습니다. 제발 봐 –