和java.lang.IllegalArgumentException: org.hibernate.QueryException: JPA-style positional param was not an integral ordinal战斗了半天,汗啊!
使用jpa + strut+ hibernate 就报org.hibernate.QueryException: JPA-style positional param was not an integral ordinal
一般把hql语句写在一行,会很长,在ide中需要拖动滚动条才能查看。为了方便阅读,故改成几行:
public List<Resource> getResourceByTag(Tag tag,int start) {
Query query = entityManager.createQuery(
"SELECT r FROM Resource r WHERE ?1" +
"IN (SELECT t FROM r.res_tags t)" +
"ORDER BY r.res_update_date DESC");
query.setParameter(1, tag);
query.setFirstResult(start);
query.setMaxResults(Constants.ITEMS_PER_PAGE);
return query.getResultList();
}
然后就报错ava.lang.IllegalArgumentException: org.hibernate.QueryException: JPA-style positional param was not an integral ordinal。
啊啊啊啊啊啊,sql中少了好几个空格,就在换行的地方
正确:
"FROM Resource r WHERE ?1 " +
"IN (FROM r.res_tags) " +
"ORDER BY r.res_update_date DESC");
无奈的教训!
一般把hql语句写在一行,会很长,在ide中需要拖动滚动条才能查看。为了方便阅读,故改成几行:
public List<Resource> getResourceByTag(Tag tag,int start) {
Query query = entityManager.createQuery(
"SELECT r FROM Resource r WHERE ?1" +
"IN (SELECT t FROM r.res_tags t)" +
"ORDER BY r.res_update_date DESC");
query.setParameter(1, tag);
query.setFirstResult(start);
query.setMaxResults(Constants.ITEMS_PER_PAGE);
return query.getResultList();
}
然后就报错ava.lang.IllegalArgumentException: org.hibernate.QueryException: JPA-style positional param was not an integral ordinal。
啊啊啊啊啊啊,sql中少了好几个空格,就在换行的地方
正确:
"FROM Resource r WHERE ?1 " +
"IN (FROM r.res_tags) " +
"ORDER BY r.res_update_date DESC");
无奈的教训!
本文解决了一个关于JPA风格的位置参数不是整数序号的问题。在使用JPA+Struts+Hibernate进行开发时,作者尝试将HQL语句拆分为多行以提高可读性,但遇到了org.hibernate.QueryException异常。通过调整HQL语句中的空格,最终解决了这一问题。
674

被折叠的 条评论
为什么被折叠?



