關於 hibernate 佔位符中使用 like 及相關注意事項
( 1 ) 注意 Object 數組裏面要對應上映射類的類型,該是 Stirng 的就 String ,該是 Integer 的就是 Integer 。
( 2 ) 注意不要將本身的 sql 語句作爲佔位符,比如 "order by hostName" ,而只需要 order by :hostName , 然後在佔位符裏面設置這個 hostName ,不然會報錯。
StringBuilder hql = new StringBuilder(0);
hql.append( "from TblHost h where h.vmHost.hostID in (select t.hostID from TblHost t" );
hql.append( " where t.ishpvhost=1 and t.ccmData.id in (select c.id from CcmData c " );
hql.append( " where c.pathid like " );
hql.append( ":id" );
hql.append( " or c.id= " );
hql.append( ":id2" );
hql.append( ")) " );
hql.append(strHql);
List<TblHost> tempList = null ;
try
{
tempList = this .getHibernateTemplate().findByNamedParam(hql.toString(),
new String[] { "id" , "id2" },
new Object[] { "%" + id + "%" , new Integer(id)});
}
catch (DataAccessException e)
{
// 這裏進行 usm 的日誌記錄及相關處理
}
田軍 sdy645 tKF25401
2010-04-21