2013-06-24 61 views
1

我正在Hibernate中使用Spring,並使用Spring Hibernate templategetHibernateTemplate().find(String query,Object values))將位置參數替換爲值。
我的查詢是:getHibernateTemplate()。查找(字符串查詢,對象值)等價於休眠

from className classObject where classObject.variableOne = ? and classObject.variableTwo = ? 

,我的參數是一個ArrayList<String> 2倍的值。

getHibernateTemplate().find(String query,Object values)在where子句中自動指定ArrayList的值(如您所見,我沒有手動綁定參數)並將結果返回給我。
現在,我從我的應用程序中刪除了spring並僅使用了休眠。所以,我想知道,

  • 是否有任何等效方法在休眠(Session或 查詢)班賦予相同的功能上面,我將通過HQL和值可用?

在此先感謝。

回答

1

你必須使用類似下面

private void setParamValues(final String[] paramValues, SQLQuery query) { 
     if (paramValues != null && paramValues.length > 0) { 
      for (int liCnt = 0; liCnt < paramValues.length; liCnt++) { 
       query.setString(liCnt, paramValues[liCnt]); 
      } 
     } 
} 

的SQLQuery將取代?通過參數的值。請記住,paramValues數組中的序列應與查詢中寫入的序列相同。

上面一直在我的情況下工作,我相信這也適用於你的情況。

這不是Hibernate方法,你必須在調用數據庫之前使用這個方法。

+0

嗨馬諾伊,感謝您的答覆。我知道上面的解決方案。我們遍歷參數值(使用for循環)並綁定查詢中的參數和輸入。但我正在尋找避免設置參數綁定的方法(No for循環)。讓我知道如果你找到任何。謝謝。 –