1. 程式人生 > >hibernate佔位符的問題導致無法執行帶變數的mysql sql語句

hibernate佔位符的問題導致無法執行帶變數的mysql sql語句

今天為研發改寫了一個巨複雜的sql,因為保密原因就不貼出來了,自覺得意之時開發哥哥抱怨說只能在命令列執行,一旦放程式裡就報錯(hibernate包裝過)

這裡給一個簡單的sql來做例子:

select a.id ,a.d ,if(@od=a.d,@rank:[email protected]+1,@rank:=1) num ,@od:=a.d from (select id ,d from number c order by c.id) as a ,(select @od:=null,@rank:=0 ) as b;   

程式報錯如下:

org.hibernate.QueryException: Space is not allowed after parameter prefix ':'

這其實是一個hibernate佔位符的問題,解決方式有兩種

1,使用createNativeQuery("SELECT @rank \\:= 1, @od \\:= 2, @a + @b");這種類似的方式(依賴於hibernate版本,具體哪個版本忘了)

2,使用hibernate自定義sql模式即可

相關推薦

hibernate佔位的問題導致無法執行變數mysql sql語句

今天為研發改寫了一個巨複雜的sql,因為保密原因就不貼出來了,自覺得意之時開發哥哥抱怨說只能在命令列執行,一旦放程式裡就報錯(hibernate包裝過) 這裡給一個簡單的sql來做例子: select a.id ,a.d ,if(@od=a.d,@rank:[email&#

Dapper 執行引數的SQL語句時,報"必須宣告標量變數@xxx"

最近在學習輕量級的ORM——Dapper,同時也在嘗試著自己實現一些功能。 但是當嘗試拼接Sql,在填入引數的時候出了一些問題。 以下是示例程式碼,首先是宣告一個SqlCommand物件。 SqlCommand cmd = new Sq

使用ADO.NET執行引數的Sql語句

不帶引數的SQL語句 過載通用Update方法 /// <summary> /// 執行增、刪、改 (帶引數的SQL語句) /// <

ajaxFileUpload返回的json資料標籤,導致無法執行success後面的程式碼

ajaxfileupload.js檔案,uploadHttpData中   【eval( "data = " + data );】-->【data = jQuery.parseJSON(jQuery(data).text());】 注:在JS中將JSON的字串解析成JSON資料格式,一般有兩種方式

ride.py在執行python3.×版本後導致無法執行及解決辦法

最近一直在自學python自動化,網上看到rf框架挺適合初學自動化測試,於是通過蟲師的搭建了rf框架, 但是在使用過程中遇到了一個問題,在網上沒有找到明確解決辦法於是想到記錄一下 之前為了搭建rf框架下載了python2.7版本,後面又想玩下爬蟲於是下了python3.4版本結果出現了下面的問題:和往常一樣切

Windows10執行VMware Workstation出現與Device Guard不相容導致無法執行與建立虛擬機器問題

原因分析 Windows10開啟Hyper-V後與VMware Workstation衝突導致無法執行和新建虛擬機器。 一般來說Windows10預設不會開啟Hyper-V,但是安裝Docker預設

win7安裝後系統保留分割槽無法分配碟導致無法啟用原因

在用光碟機安裝win7時,啟動時有兩個光碟機啟動方式,一個為開頭為efi的,一個則為光碟機號 如果用efi開頭的那個啟動並安裝則系統保留分割槽為預設efi格式,而且無法更改,導致無法更改碟符,而後無法用啟用工具啟用 所用解決辦法就是從光碟機號那個光碟機啟動方式啟動,並格式化

解決Windows10執行VMware Workstation出現與Device Guard不相容導致無法執行問題

好長時間沒用VMware (一般都是直接連線伺服器使用) 開啟VMware發現竟然不能使用 提示錯誤如下 在goole一番後,發現並不是 Credential 的關係 ,而是我更新後的 win 10 hyper沒有全部禁止 於是 開啟Power

PostgreSQL技術週刊第13期:PSQL新增變數記錄SQL語句執行情況和錯誤

PostgreSQL(簡稱PG)的開發者們: 雲棲社群已有5000位PG開發者,釋出了3000+PG文章(文章列表),沉澱了700+的PG精品問答(問答列表)。 PostgreSQL技術週刊將會為大家介紹最新的PG技術與動態、預告活動、最熱問答、直播教程等,歡迎大家訂閱PostgreSQL技術週刊和關注P

JDBC中將一個變數加入SQL語句執行

很常見的一個問題。 使用JDBC程式設計時,我們有時需要輸入的資料來更改資料庫,這個資料是由使用者輸入的而提前不知情的。 這是,我們就應該使用PreparedStatement來進行動態SQL。 例如,我們通過sno刪除學生表中的資訊,把學號以形參傳遞給方

MySQL sql語句執行順序

left join left 笛卡爾積 ner 別名 join 例如 結果 detail sql語句select語句查詢順序 (7) SELECT (8) DISTINCT <select_list> (1) FROM <

C#使用like的sql語句時防sql註入的方法

param 模擬實現 數據庫 img weight sin play www arp 本文實例敘述了在拼接sql語句的時候,如果遇到Like的情況該怎麽辦。 一般采用帶like的SQL語句進行簡單的拼接字符串時,需要開率遇到sql註入的情況。這確實是個需要註意的問題。 這

Mysql 定位執行效率低的sql 語句

optimize 用處 pen 啟用 很快 空間 復制 man pac 一、通過MySQL慢查詢日誌定位執行效率低的SQL語句。 MySQL通過慢查詢日誌定位那些執行效率較低的SQL 語句,用--log-slow-queries[=file_name]選項啟動時,mysql

怎麼查詢執行比較慢的sql語句

一、MySQL資料庫有幾個配置選項可以幫助我們及時捕獲低效SQL語句 1,slow_query_log 這個引數設定為ON,可以捕獲執行時間超過一定數值的SQL語句。 2,long_query_time 當SQL語句執行時間超過此數值時,就會被記錄到日誌中,建議設定為1或者更

執行最慢的SQL語句、總耗CPU最多的前個SQL、平均耗CPU最多的前個SQL

--執行最慢的SQL語句 SELECT (total_elapsed_time / execution_count)/1000 N'平均時間ms' ,total_elapsed_time/1000 N'總花費時間ms' ,total_worker_time/1000 N'所用

檢視oracle中未使用繫結變數sql語句

資料庫版本:11.2.0.4 查詢語句: with force_mathces as (select l.force_matching_signature mathces, max(l.sql_id || l.child_number) max_sql_

VS2013使用MySQL資料庫,資料集中如何填充引數的sql語句

本人在網上查詢一番後,發現均無法實現效果,之前的專案使用Oracle,sql傳參類似“......where id = :id”,然後突然想到直接tableAdapter裡面新建一個update查詢,不就知道使用MySQL資料庫時sql傳參了嘛。以上思路,下給例子:

SqlParameter類——引數的SQL語句

                 SqlParameter 類表示 SqlCommand 的引數,也可以是它到 DataSet 列的對映。無法繼承此類。名稱空間:  System.Data.SqlClient程式集:  System.Data(在 System.Data.dll 中)舉例1    string

c#將變數嵌入SQL語句

1、使用 ' " +    + " ' 拼接 string mysql = " SELECT Cname,Grade FROM student,score,course WHERE student.Sno = score.Sno

jdbc對於模糊查詢like語句巢狀變數sql語句寫法

在java寫對資料庫操作的程式時,有時會遇到模糊查詢字串匹配sql語句,這時應該怎麼巢狀變數呢,如下: String sql="select * from admin where name like