问题描述
现在有一个工程,两台服务器同时使用同一个功能--查询,但查询条件是不同的,一个查5月份的,一个查3月份的,查5月份的首先查出来,然后紧接着查3月份的也查出来了,但当查5月份的人作导出时,导出的却是3月份的,这应该是缓存引起的问题,但到底应该怎么解决,请教哪位大虾指点一下
解决方案
本帖最后由 u012220196 于 2014-08-07 17:00:49 编辑
解决方案二:
怎么会是缓存?你做了应用服务器的负载均衡?使用了单独的缓存服务?会不会你自己的查询条件弄反了
解决方案三:
代码也没有,什么都没有,怎么指点
解决方案四:
//查询和导出的两个方法publicclassICustomersManagerextendsHibernateDaoSupportimplementsCustomersManager{DoDealdod=newDoDeal();ListfreightList=null;Listcn1=newArrayList();publicMapgetFreightBill(finalFreightFormff,finalintpagenum){HashMaphm=(HashMap)getHibernateTemplate().execute(newHibernateCallback(){publicObjectdoInHibernate(Sessions){booleanb=true;Stringhql="fromTrFreightBillwhere1=1";......//这是SQL语句中需要的条件inttotal=q.list().size();Listcn=newArrayList();Listlist=q.list();for(inti=0;i<total;i++){StringcarrierNameList="";TrFreightBilltfb=(TrFreightBill)list.get(i);StringconsignId=tfb.getConsignId();System.out.println("consignId===="+consignId);Stringhql1="selecttransfer_carrier_namefromco_consign_order_transferwhereconsign_id='"+consignId+"'";SQLQueryq1=s.createSQLQuery(hql1).addScalar("transfer_carrier_name",neworg.hibernate.type.StringType());Listlist1=q1.list();for(intj=0;j<list1.size();j++){StringcarrierName=(String)list1.get(j);carrierNameList+=(j+1)+"承运商:"+carrierName+"";}cn.add(carrierNameList);}cn1=cn;Maphm=newHashMap();freightList=list;//有关分页的代码intnum=list!=null?list.size():0;q.setFirstResult(DataSet.everypagenum*(pagenum-1));q.setMaxResults(DataSet.everypagenum);intpageNum=num==0?0:num/DataSet.everypagenum+(num%DataSet.everypagenum==0?0:1);Listlist2=q.list();hm.put("pageNum",pageNum);hm.put("num",num);hm.put("list",list2);hm.put("pageNo",num==0?0:pagenum);//gongjiyehm.put("carrierName",cn);returnhm;}});returnhm;}//导出publicListgetFreightBillToExcel(){Listfields=newArrayList();for(inti=0;i<freightList.size();i++){Listlist2=newArrayList();TrFreightBilltfb=(TrFreightBill)freightList.get(i);list2.add(InitPageSet.nullToEmpty(InitPageSet.getLabelByOption(tfb.getCompanyId(),DataSet.allcompanyids)));.............fields.add(list2);}returnfields;}
解决方案五:
这个关于查询和导出的两个方法,我试了下,导出的是最近一次查出来的,若两个人同时使用,那么导出的就是最后查出来的数据