一個加號引發(fā)的問題

grails中執(zhí)行sql操作的代碼很簡單,如下:
def dataSource
def sql = new Sql(dataSource)
def institutionId = 123
def loanFeeSql = "SELECT NVL(SUM(B.LOAN_FEE),0) AS SUM,COUNT(B.ID) AS NUM FROM FUND_ACCOUNT A,LOAN_FEE B,INSTITUTION C "
+"WHERE A.INSTITUTION_ID = C.ID AND C.ID =? AND A.BANK_ACCOUNT = B.REMIT_BANK_ACCOUNT"
def loanFeeList = sql.rows(loanFeeSql,institutionId)
本來不會覺得有任何問題,但執(zhí)行之后卻發(fā)生異常:
No signature of method: java.lang.String.positive() is applicable for argument types: () values: []
Possible solutions: notify(), size(), size(), tokenize(), tokenize(). Stacktrace follows:
groovy.lang.MissingMethodException: No signature of method: java.lang.String.positive() is applicable for argument types: () values: []
Possible solutions: notify(), size(), size(), tokenize(), tokenize()
這個異常還真是百思不得其解啊,和java.lang.String.positive()有什么關(guān)系呢,百度之,查了好久,又問了我的一個同事,才發(fā)現(xiàn),groovy中因?yàn)闆]有分號作為每一行的分隔符,所以,如果一個字符串需要使用“+”拼起來,則需要把“+”寫在上一行的末尾,如果寫到下一行的開頭,則可能默認(rèn)下一行是另外一條語句,暈。。。
所以,正確的寫法是:
def loanFeeSql = "SELECT NVL(SUM(B.LOAN_FEE),0) AS SUM,COUNT(B.ID) AS NUM FROM FUND_ACCOUNT A,LOAN_FEE B,INSTITUTION C "+
"WHERE A.INSTITUTION_ID = C.ID AND C.ID =? AND A.BANK_ACCOUNT = B.REMIT_BANK_ACCOUNT"
或者使用三個分號,這樣編譯器會將上下兩行自動識別為一個字符串:
def loanFeeSql = """SELECT NVL(SUM(B.LOAN_FEE),0) AS SUM,COUNT(B.ID) AS NUM FROM FUND_ACCOUNT A,LOAN_FEE B,INSTITUTION C
WHERE A.INSTITUTION_ID = C.ID AND C.ID =? AND A.BANK_ACCOUNT = B.REMIT_BANK_ACCOUNT"""
參考資料:http://heqiang421.blog.163.com/blog/static/232275071201472924551504/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容