日期:2014-05-17  浏览次数:20753 次

hql查不到数据的情况
三段代码都是用基类的findPage方法查询数据的,查询不同的订单。前几天没有问题的,今天把同事的化码更新下来就查不到数据了。查询的流程代码没有改过。这种问题一般是在哪个地方有问题呀?大神们指点下呀,完全没有方向、、、
	public Page<Order> findPage(Member member, Pageable pageable) {
if(member == null) {
return new Page(Collections.emptyList(), 0L, pageable);
}
CriteriaBuilder cb = this.entityManager.getCriteriaBuilder();
CriteriaQuery<Order> cq = cb.createQuery(Order.class);
Root<Order> root = cq.from(Order.class);
cq.select(root);
cq.where(cb.equal(root.get("member"), member));
return super.findPage(cq, pageable);
}

	public Page<OrderPack> findPage(OrderStatus orderStatus, Boolean isAllPostalInConfirmed, Set<Storage> storages, Pageable pageable) {
CriteriaBuilder cb = this.entityManager.getCriteriaBuilder();
CriteriaQuery<OrderPack> cq = cb.createQuery(OrderPack.class);
Root root = cq.from(OrderPack.class);
cq.select(root);
Predicate predicate = cb.conjunction();
if (orderStatus != null) {
predicate = cb.and(predicate, cb.equal(root.get("orderStatus"), orderStatus));
}
if(isAllPostalInConfirmed != null) {
predicate = cb.and(predicate,cb.equal(root.get("isAllPostalInConfirmed"), isAllPostalInConfirmed));
}
if(storages != null && !storages.isEmpty()) {
predicate = cb.and(predicate, root.get("storage").in(storages));
}
cq.where(predicate);
return findPage(cq, pageable);
}

		public Page<Postal> findPage(Member member, Pageable pageable) {
  if (member == null)
    return new Page(Collections.emptyList(), 0L, pageable);
  CriteriaBuilder localCriteriaBuilder = this.entityManager.getCriteriaBuilder();
  CriteriaQuery localCriteriaQuery = localCriteriaBuilder.createQuery(Postal.class);
  Root localRoot = localCriteriaQuery.from(Postal.class);
  localCriteriaQuery.select(localRoot);
  localCriteriaQuery.where(localCriteriaBuilder.equal(localRoot.join("member"), member));
  return super.findPage(localCriteriaQuery, pageable);
}

------解决方案--------------------
你配置一下showsql然后把打印出来的sql语句拷贝到数据库去运行看看有没有数据就知道了