inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! Querydsl

조회 API 컨트롤러 개발

h2db와 QueryDSL사용시 preparedStatement의 한글깨짐

161

손민혁

작성한 질문수 1

0

영한님 강의에서 where절에 들어가는 모든 구분은 전부

영어입니다.

ex) where(member.username.eq("member1"))

 

근데 저는 한글데이터를 넣고 where을 해보니 원하는 결과가 조회되지않았고 다음과같은 로그가 출력됩니다.

 

  1. org.hibernate.orm.jdbc.bind : binding parameter (1:VARCHAR) <- [%2프%]

  2. /**/prep5.setString(1, "%2\u1111\u1173%");

 

'2프'라는 글자를 where절에 넣어서 조회하려하고 hibernate에서는 실제로 %2프% 라는 원하는 결과를 바인딩 해줬습니다. 하지만 h2db의 로그에서는 2는 제대로지만 프가 ㅍ과 ㅡ를 분리하여 유니코드로 치환된 상태로 바인딩이 되서 분명 데이터가 있음에도 아무데이터도 조회되지않습니다. h2db에서 prepareStatement에 한글을 바인딩할때 깨지는현상 어떻게 해결할 수 있나요??

java jpa h2db querydsl

답변 2

0

김영한

안녕하세요. 손민혁님

도움을 드리고 싶은데, 저희도 처음보는 현상이어서 좀 더 확인을 해봐야 할 것 같아요.

다음 내용을 남겨주시면 저희도 한번 같은 환경에 맞추어 확인해볼게요.

  1. 사용하는 OS 환경을 알려주세요.

  2. 사용하는 자바 버전을 알려주세요.

  3. 설치한 H2 데이터베이스 버전을 알려주세요(라이브러리X, h2.sh로 실행하는 H2 데이터베이스의 버전)

  4. 실제 동작하는 전체 프로젝트를 ZIP파일로 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx


주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요


추가로 다음 내용도 코멘트 부탁드립니다.

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명 (오류 화면, 오류 로그 포함)


링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

손민혁님께서 경험하신 H2DB와 한글 관련 문제는 데이터 처리 시 인코딩 문제에 의해 발생할 수 있는 현상입니다. 이 문제는 대개 데이터베이스 설정 또는 연결 문자열에서 UTF-8 인코딩이 누락되었을 때 발생할 수 있습니다. 한글이 제대로 저장되고 검색되도록 하기 위해서는 데이터베이스와 애플리케이션 모두에서 UTF-8을 사용하도록 설정해야 합니다.

다음은 이 문제를 해결하는 데 도움이 될 수 있는 몇 가지 제안입니다.

  1. H2 데이터베이스 URL 확인: JDBC URL에 ;DB_CLOSE_DELAY=-1로 설정하시고, init=RUNSCRIPT FROM 'classpath:init.sql'; 설정 부분이 있다면 확인해주세요. H2 데이터베이스를 사용할 때 인코딩 문제가 발생하지 않도록 DB_CLOSE_ON_EXIT=FALSE를 추가할 수 있습니다.

  2. JDBC URL 내 인코딩 설정: ;MODE=MySQL;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE;DATABASE_TO_UPPER=false; 뒤에 ;CHARACTER_SET=UTF8을 추가하여 인코딩 설정을 확인하세요.

  3. H2 데이터베이스 인코딩 설정: H2 콘솔을 통해 SET COLLATION UTF8 명령을 실행하여 데이터베이스의 기본 인코딩 설정을 명시적으로 설정해주세요.

  4. Hibernate 설정 확인: hibernate.connection.characterEncoding=UTF-8hibernate.connection.useUnicode=true 속성들을 포함하여 Hibernate 설정에서 인코딩을 명시적으로 설정했는지 확인합니다.

  5. ApplicationProperties/Configuration 파일 확인: spring.datasource.urlcharacterEncoding=UTF-8과 같은 설정을 명시적으로 추가하여야할 수도 있습니다.

유사한 문제를 다루는 인프런 게시물을 추천해 드릴 수 있으면 좋겠지만, 현재로서는 정확한 URL을 제공드리기 어렵습니다. 다음 링크를 통해 사용자들이 동일한 문제로 질문한 Q&A를 참고하시기를 권장합니다.

관련 질문 보기

질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

손민혁

위 내용을 전부 해봤지만 안되네요. 사실 이전 gpt 통해서도 유사한 답변들을 들었고 전부 안됐습니다. 특히 CHARACTER_SET=UTF8 이거 추가하라고하는건 웃음벨이네요. 왜냐면 그런 설정을 지원하지않는다는 오류가 뜨거든요

SpringBoot 4.X에서의 Querydsl 설정

0

91

2

querydsl 오픈소스에 대한 질문

0

72

1

예제에서의 카운트 쿼리에서 join문과 where문은 필요없지 않나요?

0

109

1

Querydsl 6.X버전에 대해서 어떻게 생각하시나요?

0

318

2

여러 테이블 조인하여 통계치를 구하고자 할 때 어떤 방법이 더 효율적일까요

1

71

1

fetchResults()는 더이상 권장되지 않는다는데 맞나요?

0

160

1

querydsl sum() 메서드 없어요.

0

160

2

build 디렉터리 생성

0

140

2

자바 ORM 표준 JPA 프로그래밍 - 기본편 듣고 바로 학습해도 괜찮을까요?

0

114

2

현재 Querydsl에서 from절 서브쿼리를 지원하나요?

0

92

1

오타 제보 드립니다.

0

73

2

벌크 연산과 flush, clear

0

76

1

Run As Intellij 로 변경시 Q타입 import 불가

0

88

1

QHello import하기 문제 발생

0

147

2

등록된 함수 보는법(H2Dialect) 질문

0

68

2

5.0부터 Querydsl은 향후 fetchCount() , fetchResult() 를 지원하지 않기로 결정했다고 하는데 이에 맞는 강의

1

199

2

[환경설정 PDF 부트 3.0이후 설명 질문] build.gradle에 compileQuerydsl을 정의하지 않은 상태에서 Gradle->Tasks->other->compileQuerydsl을 클릭하라고 하는 이유가 무엇인가요??

1

201

1

querydsl 설정 문제

0

222

2

quey dsl 설정부분

0

158

2

count 쿼리 관련 질문입니다!

0

75

1

stringtemplate를 이용하여 where절 검색 방법 질문 드립니다.

0

89

1

답변부탁드리겠습니다.

0

90

2

(OrderSpecifier)관련 내용 어디있을가요

0

66

1

중급문법 벌크연산에서

0

83

2