hibernatesql參數
A. Hibernate4 升級到Hibernate5 中 sql查詢注意事項
在 Hibernate4 中,利用原生宏數SQL語句查詢時,
1、可使用Session.createSQLQuery(sql)建立Qurey(org.hibernate.Query),
2、可使用Query.setParameter(int index, Object obj),對sql語句中的參數根據位置進行參數值動態綁定;
升級到 Hibernate5 後
1、org.hibernate.Query被標記為@Deprecated
2、Session().createSQLQuery(sql)返回類型為org.hibernate.query.Query;
3、並且Session().createSQLQuery也已經被標記為@Deprecated;
4、可使用Session().createNativeQuery(sql)代替createSQLQuery。
5、createNativeQuery返回的Query, 不可 通過setParameter(int index, Object obj) 根據位置 進行參數值動態綁定碰絕穗; 只可以 通過setParameter(String paramname, Object obj) 按參數名稱綁定 。
6、createNativeQuery(sql)中的sql語句中的 查詢笑卜佔位符
只可使用 命名參數 方式進行編寫。
上問錯誤例子中,將導致如下錯誤:
B. Hibernate調用存儲過程,使用SQLQuery的方式,請問如果返回參數是CURSOR,怎麼寫呢
我使用的oracle
proc.registerOutParameter(2, OracleTypes.CURSOR);
不過第一個數好像是從1開始的吧
C. 如何讓hibernate顯示執行sql的參數
試試
log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
log4j的級別,要對應
更早期的
log4j.logger.org.hibernate.type=TRACE
log4j.logger.org.hibernate.sql=TRACE