警告:use named parameters or JPA-style positional parameters instead.

背景

一开始我以为是导包错误的原因,因为setParameter()提示弃用已经解决了:http://blog.csdn.net/saywhat_sayhello/article/details/78911192 然后发现setString()还是会有相关提示。

原因

hibernate 4.1之后对于HQL中查询参数的占位符做了改进,它建议用命名参数或者JPA占位符两中种方法来代替老的占位符查询方法.

Query query = session.createQuery("update TBook set bprice = ? where bid = ?");
query.setInteger(0, 10086);
query.setString(1, "B0001");

解决方案

1.用命名参数

Query query = session.createQuery("update TBook set bprice =:bprice where bid =:bid");
query.setInteger("bprice", 1086);
query.setString("bid", "B0001");

2.用JPA占位符

Query query = session.createQuery("update TBook set bprice = ?0 where bid = ?1");
query.setInteger(0, 1086);
query.setString(1, "B0001");

数字可以不用从0开始,但是要对应。

后话

虽然用这两种方式都可以消除警告,但是eclipse的提示还是会显示弃用2333.

你可能感兴趣的:(异常处理)