2017-02-06 2 views
-1

Könnte mir bitte jemand helfen oder auf die richtige Richtung zeigen, um die HQL-Abfragen in meiner DAO-Implementierung in Hibernate-Kriterien zu ändern? Ich verwende Spring MVC, und hier ist der Code:Ändern dieser HQL-Abfragen in Hibernate-Kriterien

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

} 

ich Ihnen im Voraus danke !! Danke !!!

+0

Warum wollen Sie das tun? – bphilipnyc

Antwort

0

Versuchen wie folgt aus:

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