将此 HQL 查询更改为 Hibernate 标准

Changing this HQL Queries to Hibernate Criteria

任何人都可以帮助我,或者指出正确的方向来将我的 DAO 实现中的 HQL 查询更改为 Hibernate 标准吗? 我正在使用 spring mvc,代码如下:

package cl.cbrtemuco.autoconsultas.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import cl.cbrtemuco.autoconsultas.entity.Titulos;

@Repository
public class TitulosDAOImpl implements TitulosDAO {

    @Autowired
    SessionFactory sessionFactory;

    @Override
    public List<Titulos> searchTitulosByRazonSocial(String rSocial) {
        Session currentSession = sessionFactory.getCurrentSession();
        Query<Titulos> theQuery = currentSession.createQuery("from Titulos where RazonSocial like :rSocial",
                Titulos.class);
        theQuery.setParameter("rSocial", "%" + rSocial.toLowerCase() + "%");
        List<Titulos> titulosEncontrados = theQuery.getResultList();
        return titulosEncontrados;
    }

    @Override
    public Titulos getTituloRSoc(int idTit) {
        Session currentSession = sessionFactory.getCurrentSession();
        Titulos datTituloRSoc = currentSession.get(Titulos.class, idTit);
        return datTituloRSoc;
    }

    @Override
    public Titulos getTituloNombre(int idTit) {
        Session currentSession = sessionFactory.getCurrentSession();
        Titulos datTituloNombre = currentSession.get(Titulos.class, idTit);
        return datTituloNombre;
    }

    @Override
    public List<Titulos> searchTitulosByNombre(String apPaterno, String apMaterno, String nombres) {
        Session currentSession = sessionFactory.getCurrentSession();
        Query<Titulos> theQuery = currentSession.createQuery(
                "from Titulos where ApellidoPaterno like :apPaterno or ApellidoMaterno like :apMaterno or Nombres like :nombres", Titulos.class);
    theQuery.setParameter("apPaterno", "%"+apPaterno.toLowerCase()+"%")
                .setParameter("apMaterno", "%"+apMaterno.toLowerCase()+"%")
                .setParameter("nombres", "%"+nombres.toLowerCase()+"%");
        List<Titulos> titulosEncontradosNombre = theQuery.getResultList();
        return titulosEncontradosNombre;
    }

}

提前谢谢你!! 谢谢!!!

这样试试:

 @Override
public List<Titulos> searchTitulosByRazonSocial(String rSocial) {
    Session currentSession = sessionFactory.getCurrentSession();
    Criteria c = currentSession.createCriteria(Titulos.class);
    c.add(Restrictions.like("RazonSocial", "%" + rSocial.toLowerCase() + "%"));
    List<Titulos> titulosEncontrados = (List<Titulos>)c.list();
    return titulosEncontrados;
}

@Override
public List<Titulos> searchTitulosByNombre(String apPaterno, String apMaterno, String nombres) {
    Session currentSession = sessionFactory.getCurrentSession();
    Criteria c = currentSession.createCriteria(Titulos.class);
    Criterion or = Restrictions.or(
                        Restrictions.like("ApellidoPaterno", "%"+apPaterno.toLowerCase()+"%"), 
                        Restrictions.like("ApellidoMaterno", "%"+apMaterno.toLowerCase()+"%")
        );
    Criterion or2 = Restrictions.or(
                        or, 
                        Restrictions.like("ApellidoMaterno", "%"+apMaterno.toLowerCase()+"%"));
    c.add(or2);
    List<Titulos> titulosEncontradosNombre = (List<Titulos>)c.list();
    return titulosEncontradosNombre;
}