>  기사  >  데이터 베이스  >  Hibernate 네이티브 쿼리에서 MySQL 할당 연산자(:=)를 사용하는 방법은 무엇입니까?

Hibernate 네이티브 쿼리에서 MySQL 할당 연산자(:=)를 사용하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-01 19:42:02263검색

How to Use the MySQL Assignment Operator (:=) in Hibernate Native Queries?

Hibernate 기본 쿼리에서 MySQL 할당 연산자 사용

Hibernate에서 기본 SQL 쿼리를 실행하려면 일반적으로 지원되지 않는 특정 SQL 연산자와 구문을 사용해야 합니다. ORM 프레임워크에서 기본적으로 지원됩니다. 그러한 연산자 중 하나는 하위 쿼리의 컨텍스트에서 사용되는 MySQL 할당 연산자(:=)입니다.

Hibernate 기본 쿼리에서 :=" 연산자를 활용하려고 하면 사용자는 "Space is"와 유사한 오류를 접할 수 있습니다. 매개변수 접두사 ':' 뒤에는 허용되지 않습니다. 이는 Hibernate가 쿼리를 구문 분석하고 ":="를 매개변수 자리 표시자로 해석하여 혼란을 야기하기 때문입니다.

문제 해결

Hibernate 4.1.3 및 이후 버전에서는 이 문제가 해결되었습니다. 기본 쿼리에서 "=:" 연산자를 성공적으로 사용하려면 간단히 백슬래시()로 이스케이프 처리하세요. 이는 Hibernate가 연산자를 다음과 같이 처리하도록 지시합니다. 매개변수 대신 리터럴.

업데이트된 쿼리

다음은 백슬래시 이스케이프를 사용하여 업데이트된 쿼리입니다.

SELECT k.`news_master_id` AS id, @row \:= @row + 1 AS rownum
FROM keyword_news_list k
JOIN (SELECT @row \:= 0) r
WHERE k.`keyword_news_id` = :kid
ORDER BY k.`news_master_id` ASC

" =:" 연산자인 경우 Hibernate가 이를 매개변수 플레이스홀더가 아닌 MySQL 할당 연산자로 해석하도록 지시하여 기본 쿼리에서 연산자를 올바르게 사용할 수 있도록 합니다.

위 내용은 Hibernate 네이티브 쿼리에서 MySQL 할당 연산자(:=)를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.