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

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

Patricia Arquette
Patricia Arquette원래의
2024-11-03 00:36:29707검색

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

Hibernate 네이티브 쿼리에서 MySQL 할당 연산자(=:) 사용

Hibernate에서 MySQL 네이티브 쿼리로 작업할 때 subselect 문을 활용하는 것이 필요한 경우가 많습니다. 그러나 이러한 쿼리에서 MySQL 할당 연산자(:=)를 사용할 때 "매개변수 접두사 ':' 뒤에 공백이 허용되지 않습니다."라는 예외가 발생할 수 있습니다.

이 문제는 Hibernate의 매개변수 접두사 뒤에 공백을 제한하는 데서 비롯됩니다. 매개변수 접두사. 그러나 이 특정한 경우에 대한 해결책이 존재합니다.

HHH-2697 수정

4.1.3 이전의 Hibernate 버전에서는 이 문제에 대한 해결 방법이 없었습니다. 그러나 HHH-2697 버그는 이후 릴리스에서 수정되었습니다.

Hibernate 4.1.3 이상의 경우 백슬래시()를 사용하여 할당 연산자를 이스케이프할 수 있습니다. 이렇게 하면 다음과 같은 수정된 쿼리를 사용할 수 있습니다.

<code class="sql">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</code>

이 이스케이프된 구문을 사용하면 앞서 언급한 예외가 발생하지 않고 기본 쿼리에서 할당 연산자를 사용할 수 있습니다.

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

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