JPA 네이티브 쿼리에서 특수 문자를 이스케이프하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-07 15:41:03
원래의
473명이 탐색했습니다.

How to Escape Special Characters in JPA Native Queries?

JPA 네이티브 쿼리에서 특수 문자 이스케이프

JPA(Java Persistence API) 내에서 네이티브 SQL 쿼리를 생성할 때 특수 문자로 인해 구문 분석 문제가 발생할 수 있습니다. . 이러한 문자 중 하나는 MySQL 사용자 변수에 일반적으로 사용되는 콜론(':')입니다.

과제: MySQL 사용자 변수에서 콜론 이스케이프

의 경우 예를 들어 다음 쿼리를 고려해보세요.

SELECT foo, bar, baz,
    @rownum:= if (@id = foo, @rownum+1, 1) as rownum,
    @id    := foo                         as rep_id
FROM
    foo_table
ORDER BY
    foo,
    bar desc
로그인 후 복사

JPA의 createNativeQuery 메서드를 사용하여 이 쿼리를 실행하려면 @rownum 할당에서 콜론 뒤의 공백으로 인해 예외가 발생합니다.

해결책: 백슬래시를 사용하여 콜론을 탈출

콜론 문자를 탈출하려면 앞에 백슬래시()를 붙여야 합니다. 위의 예에서는 쿼리를 다음과 같이 수정합니다.

SELECT foo, bar, baz,
    @\rownum:= if (@id = foo, @\rownum+1, 1) as rownum,
    @\id    := foo                         as rep_id
FROM
    foo_table
ORDER BY
    foo,
    bar desc
로그인 후 복사

콜론을 이스케이프 처리하면 JPA가 쿼리를 올바르게 구문 분석하고 실행을 허용합니다. 이 이스케이프 기술은 MySQL 사용자 변수의 콜론뿐만 아니라 JPA의 쿼리 구문 분석을 방해할 수 있는 모든 특수 문자에도 적용됩니다.

위 내용은 JPA 네이티브 쿼리에서 특수 문자를 이스케이프하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿