hibernate带条件分页查询,查不到结果,结果为空

Scaarf 2018-05-01 06:50:24
是我参数赋值错了么。。。。查不到结果,打印结果为空,不知道问题出在哪

Session session2 =SessionUtil.getSession();
String hql2="select p.id,p.name from Person p where p.name like :nameCondition";
//hql2="select p.id,p.name from Person p";
Query query2=session2.createQuery(hql2)
.setParameter("nameCondition", "%张三%")
.setFirstResult(2)
.setMaxResults(3);
List personList2=query2.list();
System.out.println("@@@@@@@@@@@@@@"+personList2);
System.out.println("*****************************");
for (int i = 0; i < personList2.size(); i++) {
Object[] objs=(Object[]) personList2.get(i);//声明对象数组同时用查到的结果初始化数组
System.out.println(objs[0].toString()+" "+objs[1].toString());
}
session2.close();

System.out.println("8888888888888888888");


运行结果:
@@@@@@@@@@@@@@[]
*****************************
8888888888888888888


这应该是错误原因:参数类型错了么,junit测试也没报错,我把HQL中的条件部分拿掉就没事,不知道问题出在哪

\-[SELECT] QueryNode: 'SELECT' querySpaces (person)
+-[SELECT_CLAUSE] SelectClause: '{select clause}'
| +-[DOT] DotNode: 'person0_.id' {propertyName=id,dereferenceType=PRIMITIVE,getPropertyPath=id,path=p.id,tableAlias=person0_,className=org.hibernate.bean.Person,classAlias=p}
| | +-[ALIAS_REF] IdentNode: 'person0_.id' {alias=p, className=org.hibernate.bean.Person, tableAlias=person0_}
| | \-[IDENT] IdentNode: 'id' {originalText=id}
| +-[SELECT_COLUMNS] SqlNode: ' as col_0_0_'
| +-[DOT] DotNode: 'person0_.name' {propertyName=name,dereferenceType=PRIMITIVE,getPropertyPath=name,path=p.name,tableAlias=person0_,className=org.hibernate.bean.Person,classAlias=p}
| | +-[ALIAS_REF] IdentNode: 'person0_.id' {alias=p, className=org.hibernate.bean.Person, tableAlias=person0_}
| | \-[IDENT] IdentNode: 'name' {originalText=name}
| \-[SELECT_COLUMNS] SqlNode: ' as col_1_0_'
+-[FROM] FromClause: 'from' FromClause{level=1, fromElementCounter=1, fromElements=1, fromElementByClassAlias=[p], fromElementByTableAlias=[person0_], fromElementsByPath=[], collectionJoinFromElementsByPath=[], impliedElements=[]}
| \-[FROM_FRAGMENT] FromElement: 'person person0_' FromElement{explicit,not a collection join,not a fetch join,fetch non-lazy properties,classAlias=p,role=null,tableName=person,tableAlias=person0_,origin=null,columns={,className=org.hibernate.bean.Person}}
\-[WHERE] SqlNode: 'where'
\-[LIKE] BinaryLogicOperatorNode: 'like'
+-[DOT] DotNode: 'person0_.name' {propertyName=name,dereferenceType=PRIMITIVE,getPropertyPath=name,path=p.name,tableAlias=person0_,className=org.hibernate.bean.Person,classAlias=p}
| +-[ALIAS_REF] IdentNode: 'person0_.id' {alias=p, className=org.hibernate.bean.Person, tableAlias=person0_}
| \-[IDENT] IdentNode: 'name' {originalText=name}
\-[NAMED_PARAM] ParameterNode: '?' {name=nameCondition, expectedType=org.hibernate.type.StringType@4f6f416f}

...全文
1355 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Scaarf 2018-05-15
  • 打赏
  • 举报
回复
引用 4 楼 zssazrael 的回复:
setFirstResult(2) 这个是设置从第几条数据开始读,所以如果只有2条数据是查不到的。 可以把这个去掉再试。
好吧,果然数据库里只有一条张三的记录。。。。。。
QWERT4745 2018-05-09
  • 打赏
  • 举报
回复
setFirstResult(2)是从第三条记录开始读取,改成setFirstResult(0)或者去掉试试
benpaodexin_l 2018-05-09
  • 打赏
  • 举报
回复
确定数据库中有名字中含张三的么,还是找以张三开头的啊,要是找以张三开头的前面的%要去掉,只保留后面的
幽饮烛 2018-05-07
  • 打赏
  • 举报
回复
setFirstResult(2) 这个是设置从第几条数据开始读,所以如果只有2条数据是查不到的。 可以把这个去掉再试。
幽饮烛 2018-05-07
  • 打赏
  • 举报
回复
数据库中有没有对应的数据,换非中文的条件试试。
Scaarf 2018-05-01
  • 打赏
  • 举报
回复
引用 1 楼 sun736804442 的回复:
String hql2="select p.id,p.name from Person p where p.name like :nameCondition"; 这个语句好像有问题吧,可以改为String hql2="select p.id,p.name from Person p where p.name like nameCondition";
可我看官方文档上的参数绑定也是这样啊,去掉冒号JUNIT反倒报错
sun736804442 2018-05-01
  • 打赏
  • 举报
回复
String hql2="select p.id,p.name from Person p where p.name like :nameCondition"; 这个语句好像有问题吧,可以改为String hql2="select p.id,p.name from Person p where p.name like nameCondition";

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧