Hibernate 使用HQL代替以下方法中的标准
我有以下名为Hibernate 使用HQL代替以下方法中的标准,hibernate,hql,criteria,Hibernate,Hql,Criteria,我有以下名为findExcludedFlagForfvAndij的方法,由于我使用了标准,请告知我如何更改标准,以便我可以使用hql代替标准,请告知这方面的hql是什么 public abfsm findExcludedFlagForfvAndij(IOAfv fv,ijType ij , String sx){ abfsm ioafvAndij=null; if (fv!=null && ij!=null){
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;
}
标准代码:
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);