关于hibernateHQL语句以及占位符出现Legacy-style query parameters (`?`) are no longer supported的问题
上边是错误截图,找了几个小时看了几篇文章发现他是HQL语句的占位符问题,就加了一个字母就解决了,我这个可能只是大多数情况的一种,具体情况可以看看你的语句
一下给出几种常见的解决方法
// 1:将HQL语句中的"?"改为JPA-style:
String hql = "from Student where age > ?0 and score < ?1";
Query createQuery = session.createQuery(hql);
List<Student> list = createQuery
.setInteger(0, 21)
.setDouble(1, 95)
.list();
// 2:使用setParameter():
String hql = "from Student where age > ?0 and score < ?1";
Query createQuery = session.createQuery(hql);
List<Student> list = createQuery
.setParameter(0, 21)
.setParameter(1, 95.0)
.list();
// 3:别名:要求必须以冒号开头:
String hql = "from Student where age > :myage and score < :myscore";
Query createQuery = session.createQuery(hql);
List<Student> list = createQuery
.setInteger("myage", 21)
.setDouble("myscore", 95)
.list();