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

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-03 16:04:02485검색

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

Hibernate 네이티브 쿼리의 MySQL 할당 연산자

Hibernate로 작업할 때 네이티브 쿼리에서 subselect 문을 사용해야 할 수도 있습니다. 기본 쿼리를 사용하면 자체 구문을 사용하여 기본 데이터베이스와 직접 상호 작용할 수 있습니다.

그러나 Hibernate 내의 기본 쿼리에서 MySQL 할당 연산자(:=)를 사용하려고 하면 다음과 같은 예외가 발생할 수 있습니다. 매개변수 접두사 ':' 뒤에는 허용되지 않습니다....". 이는 Hibernate의 알려진 문제(HHH-2697) 때문입니다.

솔루션

다행히 Hibernate 4.1.3 및 이후 버전에서는 이 문제가 해결되었습니다. 기본 쿼리에서 MySQL 할당 연산자를 사용하려면 이제 백슬래시()를 사용하여 이스케이프할 수 있습니다.

예를 들어 다음 기본 쿼리를 고려하세요.

<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에서 다음 코드를 사용하십시오:

<code class="java">sessionFactory.getCurrentSession()
    .createSQLQuery(query)
    .setParameter("kid", kid)
    .uniqueResult();</code>

할당 연산자를 백슬래시로 이스케이프하면 쿼리가 성공적으로 실행됩니다.

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

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