关于hibernateHQL语句以及占位符出现Legacy-style query parameters (`?`) are no longer supported的问题

关于hibernateHQL语句以及占位符出现Legacy-style query parameters (`?`) are no longer supported的问题_第1张图片

上边是错误截图,找了几个小时看了几篇文章发现他是HQL语句的占位符问题,就加了一个字母就解决了,我这个可能只是大多数情况的一种,具体情况可以看看你的语句

一下给出几种常见的解决方法

// 1:将HQL语句中的"?"改为JPA-style:
String hql = "from Student where age > ?0 and score < ?1";	
			Query createQuery = session.createQuery(hql);
			List 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 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 list = createQuery
                    .setInteger("myage", 21)
                    .setDouble("myscore", 95)
                    .list();

 

如果上边这些解决不了的可以点击此处 

 

 

 

你可能感兴趣的:(Hiberbate)