【问题标题】:Using HQL in place of criteria in the below method在以下方法中使用 HQL 代替标准
【发布时间】:2014-11-29 05:40:35
【问题描述】:

我有以下名为findExcludedFlagForfvAndij 的方法,并且我已经使用了标准,请告知我如何更改标准以便我可以使用 hql 代替标准,请告知这将是什么 hql

 public abfsm findExcludedFlagForfvAndij(IOAfv fv,ijType ij , String sx){       
            abfsm ioafvAndij=null;

        if (fv!=null && ij!=null){

        //****** want to use HQL instead of criteria******
        Criteria criteria = session.createCriteria(abfsm.class);
        criteria.add(Restrictions.eq("fvISOCode", fv.getSdmfvId()));

        criteria.add(Restrictions.or(Restrictions.isNull("sourceSystem" ), 
                  Restrictions.eq("sourceSystem", sx)));

        criteria.add(Restrictions.eq("ijCode", ij.getCode()));
        criteria.setFirstResult(0);
        criteria.setMaxResults(1);
        ioafvAndij = (abfsm) criteria.list();
        }       

        return ioafvAndij;
            }

【问题讨论】:

    标签: hibernate hql criteria


    【解决方案1】:

    对于标准代码:

        Criteria criteria = session.createCriteria(abfsm.class);
        criteria.add(Restrictions.eq("fvISOCode", fv.getSdmfvId()));
    
        criteria.add(Restrictions.or(Restrictions.isNull("sourceSystem" ), 
                  Restrictions.eq("sourceSystem", sx)));
    
        criteria.add(Restrictions.eq("ijCode", ij.getCode()));
    

    您可以使用以下 HQL 代码:

    String hql="from abfsm where fvISOCode = :fvISOCode and ijCode = :ijCode and (sourceSystem IS NULL or sourceSystem = :sourceSystem)";     
    
    Query query= session.createQuery(hql)
        .setParameter("fvISOCode", fv.getSdmfvId())
        .setParameter("ijCode", ij.getCode())
        .setParameter("sourceSystem", sx);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      • 2012-07-04
      • 2021-04-13
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多