use named parameters or JPA-style positional parameters instead.
程序员文章站
2022-03-05 10:48:05
...
WARN: [DEPRECATION] Encountered positional parameter near line 1, column 68 in HQL: [select o from net.zwkj.check.entity.Drug_blending o where measures=?].
Positional parameter are considered deprecated; use named parameters or JPA-style positional parameters instead.
从告警提示信息中可以看出,它建议用命名参数或者JPA样式占位符来代替老的占位符查询方法
老的?占位符查询代码片段:
Query query = sessionFactory.getCurrentSession().createQuery("select o from table o where measures=?");
query.setParameter(0, "测试");
正确的做法是:
一、命名参数方式
Query query = sessionFactory.getCurrentSession().createQuery("select o from table o where measures=:measures");
query.setParameter("measures", "测试");
二、JPA样式占位符
Query query = sessionFactory.getCurrentSession().createQuery("select o from table o where measures=?0");//0可以有多个
query.setParameter(0, "测试");//第一个参数0表示给占位符为?0的赋值,谨记(这不是下标,这不是下标),我写?9,那么参数传入的就是
query.setParameter(9, "测试")
还可以measures=?0 and abc=?0 //这样的setParameter一个参数即可
需要注意的是 Query 是org.hibernate.Query中的
每天进步一点点!!!
Positional parameter are considered deprecated; use named parameters or JPA-style positional parameters instead.
从告警提示信息中可以看出,它建议用命名参数或者JPA样式占位符来代替老的占位符查询方法
老的?占位符查询代码片段:
Query query = sessionFactory.getCurrentSession().createQuery("select o from table o where measures=?");
query.setParameter(0, "测试");
正确的做法是:
一、命名参数方式
Query query = sessionFactory.getCurrentSession().createQuery("select o from table o where measures=:measures");
query.setParameter("measures", "测试");
二、JPA样式占位符
Query query = sessionFactory.getCurrentSession().createQuery("select o from table o where measures=?0");//0可以有多个
query.setParameter(0, "测试");//第一个参数0表示给占位符为?0的赋值,谨记(这不是下标,这不是下标),我写?9,那么参数传入的就是
query.setParameter(9, "测试")
还可以measures=?0 and abc=?0 //这样的setParameter一个参数即可
需要注意的是 Query 是org.hibernate.Query中的
每天进步一点点!!!