혹시 EntityManager.createNativeQuery().getResultList() 했을 때
result FETCH 파라미터에 NULL이 입력됐다면서 예외 뱉거나
setParameter로 이름기반 바인딩했을때랑
하드코딩했을때랑 결과가 다른(전자는 결과없는걸로 나옴)
경험한 사람 있음?
로그 찍어도 분명 파라미터 바인딩은 잘된거 같은데
결과보면 그게 아니란 말이지...
웃긴건 되는 쿼리가 있고 안되는 쿼리가 있음...
어떤 쿼리는 정상작동함ㅜ
일단 하드코딩안하고 + 값 + 이런식으로 하드코딩해놨는데
그대로 쓸 순 없으니까ㅜ
result FETCH 파라미터에 NULL이 입력됐다면서 예외 뱉거나
setParameter로 이름기반 바인딩했을때랑
하드코딩했을때랑 결과가 다른(전자는 결과없는걸로 나옴)
경험한 사람 있음?
로그 찍어도 분명 파라미터 바인딩은 잘된거 같은데
결과보면 그게 아니란 말이지...
웃긴건 되는 쿼리가 있고 안되는 쿼리가 있음...
어떤 쿼리는 정상작동함ㅜ
일단 하드코딩안하고 + 값 + 이런식으로 하드코딩해놨는데
그대로 쓸 순 없으니까ㅜ
네이티브 쿼리때문에 영속성 컨텍스트랑 무결성이 깨진거 아님?
ㄴㄴ애초에 select만 하는데다 똑같은 방식으로 쿼리작성하고 파라미터 바인딩해줘도 정상작동하는 쿼리도 있어 cte를 써서 그런건가 싶기도하고..
jpa 쓰는데 왜 cte씀?
이게 limit ? 로 pstm 날리면 result FETCH 파라미터에 NULL 값 들어왔다고 예외뱉고 하드코딩으로 limit 100 이런식으로 날리면 괜찮음 근데 다른 파라미터들도 이상하게 DB에 전달이 된건지 일치결과가 0건이 뜨더라ㅜㅜ 하드코딩하면 정상조회되고...
최적화땜에
p6spy로 디버깅 해보거나 일단 쿼리가 복잡하다 싶으면 mybatis 나 jdbc 쓰는게 맞음
그리고 jpa 는 내부적으로 알아서 pstmt 사용하기 때문에 setparameter 만 던져주면 되는데
예외추적해보니까 jdbc 예외던데 정안되면 그냥 jdbc 고려하고 있긴해 자고일어나서 다시 디버깅해볼게 다들 땡큐..
내말이 그거야 setPatameter에 바인딩 다 해주고 네이티브 쿼리에도 :name 처럼 다 처리해줬는데 이럼
하이버네이트 바인딩 로그 trace true로 해서 무슨 값 바인드됐는지 확인했는데 값은 다 제대로 바인딩됐음
내가보기엔 하드코딩으로 jpa에서 지원하지 않는 코딩을 한거같음 페이징하고싶으면 pageRequest로 pageable 사용하는거 추천함
ㅇㅋㅇㅋ 고맙다잉