记录--关于DetachedCriteria离线查询

一个下午还没解决!!!!!!!!!
首先,咱们先拟定三张表,仓库表store,货物表goods,货物进出库历史记录表h istory
 关系如图,store 里面嘛,就是记录仓库有哪些,现在假设里面有 仓库1 和 仓库2 
goods 嘛,假设 有 商品1 商品2 ,这两个商品 属于 仓库1;
还有商品3 和商品4 ,这两个商品 属于 仓库2;
history 表中 是关于 商品1 商品2  商品3 和商品4  的进出库记录,现在我们假设 每件商品 都有进出库记录;





现在的问题是:

查询仓库1里面的商品(就是 商品1 商品2 ) 的所有进出库记录?
 
现在拟用 
DetachedCriteria离线查询 ,(就用    DetachedCriteria ,不用HQL,也不要 Criteria )
以下是具体实现代码:

//action
public  class  GoodsAction  extends  ActionSupport  implements  ModelDriven < Goods > {
     //
         public  String  historyFind(){
         History  history1  =  new  History();
         DetachedCriteria  detachedCriteria  =  DetachedCriteria. forClass( History. class);
         System. out. println( "" + goods. getNm() + "" + goods. getName() + goods. getStore(). getId());
         if( goods. getNm()  !=  null  &&  goods. getNm(). trim(). length() > 0){
            detachedCriteria.createAlias( "goods""goods").add(Restrictions.eq( "goods.nm",goods.getNm()));
        } //1
         if ( goods. getName()  !=  null  &&  goods. getName(). trim(). length()  >  0) {
              detachedCriteria. createAlias( "goods""goods"). add( Restrictions. like( "goods.name",
                        "%"  +  goods. getName()  +  "%"));
        } //2
         if ( goods. getStore()  !=  null
                   &&  goods. getStore(). getId(). trim(). length()  >  0) {
              // 
              detachedCriteria. createAlias( "goods""goods"). add( Restrictions. eq( "store.id"goods. getStore(). getId()));
        } //3
         goodHistorysList  =  goodsService. listHistoryGoods( detachedCriteria);
        }
         return  "historyFindSUCCESS";
    }
//service
public  class  GoodsService {
     public  List < History >  listHistoryGoods( DetachedCriteria  detachedCriteria) {
      
         List < History >  goodHistorysList  =  goodsDAO
                  . findByHistory( detachedCriteria);
       // 这里需要,取,已解决,代码已省略
         return  goodHistorysList;
    }
}
//DAO
public  class  GoodsDAO  extends  HibernateDaoSupport {
     public  List < History >  findByHistory( DetachedCriteria  detachedCriteria) {
         // TODO Auto-generated method stub
         return  this. getHibernateTemplate(). findByCriteria( detachedCriteria);
    }
}
 
 
< s:form  action = "goods_historyFind.action"  method = "post"  name = "select"  theme = "simple" >
        < s:textfield  cssClass = "tx"  name = "nm"  id = "nm" />
        < s:textfield  cssClass = "tx"  name = "name"  id = "name" />
        < s:textfield  cssClass = "tx"  name = "store"  id = "store" />这里还有个提交的按钮~~
 
</ s:form >
 
遇到的具体问题如下
 
现在我如果不带条件查询的话可以取得history 里面的所有记录并显示
也可以单带条件 nm 进行查询,没报错(问题一代码实现)
可以单带条件 name 进行查询,没报错(问题二代码实现) 
 
如果同时带条件 nm 与 name 查询 的话 会报错,提示 重复 的 goods  知道错在哪里但是目前还不会解决。。。提示        
duplicate alias: goods     ---------这个问题还比较好解决,虽然目前没解决------------


如果只带条件store查询 的话,果断报错,问题三的 代码不能查询仓库1 和 2 里面商品的具体历史记录。
代码错误重重啊,我实在搞不清楚
  DetachedCriteria 如何进行三个表之间的查询,简单的说,不会跨表查询。因为 对于  DetachedCriteria的具体用法还不够熟悉,而且网上 也没有 三个表之间 的  DetachedCriteria  查询!!!!!------太郁闷了,没个参考--------

查了API 实在看不下去,阿玛尼光芒 的英文!!!!!!!
现在记录下,望解决!!
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值