【问题标题】:Changing this HQL Queries to Hibernate Criteria将此 HQL 查询更改为休眠条件
【发布时间】:2017-06-23 08:42:02
【问题描述】:

谁能帮助我,或者指出正确的方向,将我的 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;
    }

}

先谢谢你了!! 谢谢!!!

【问题讨论】:

  • 你为什么要这样做?

标签: spring spring-mvc hql hibernate-criteria


【解决方案1】:

试试这样:

 @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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多