Monday, December 01, 2014

@NamedQuery y Query con JPA

Si deseamos realizar consultas mediante JPA

1. Crear un NamedQuery 
Creamos el  @NamedQuery en el Entity

    @NamedQuery(name = "Configuracion.findByIdmunicipio", query = "SELECT c FROM Configuracion c WHERE c.idmunicipio = :idmuinicipio"),

@Entity
@Table(name = "configuracion")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Configuracion.findAll", query = "SELECT c FROM Configuracion c"),
    @NamedQuery(name = "Configuracion.findByIdreglasrecargo", query = "SELECT c FROM Configuracion c WHERE c.idreglasrecargo = :idreglasrecargo"),
      @NamedQuery(name = "Configuracion.findByIdmunicipio", query = "SELECT c FROM Configuracion c WHERE c.idmunicipio = :idmunicipio"),
    @NamedQuery(name = "Configuracion.findByFecha", query = "SELECT c FROM Configuracion c WHERE c.fecha = :fecha")})


En el EJB invocamos el NamedQuery creado
public List<Configuracion> findByIdMunicipio(Municipios value) {
    Query query = em.createNamedQuery("Configuracion.findByIdmunicipio");
        return query.setParameter("idmunicipio", value).getResultList();
    }

2. No modificamos el Entity
@Entity
@Table(name = "configuracion")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Configuracion.findAll", query = "SELECT c FROM Configuracion c"),
    @NamedQuery(name = "Configuracion.findByIdreglasrecargo", query = "SELECT c FROM Configuracion c WHERE c.idreglasrecargo = :idreglasrecargo"),
    @NamedQuery(name = "Configuracion.findByFecha", query = "SELECT c FROM Configuracion c WHERE c.fecha = :fecha")})

En el EJB creamos el Query
public List<Configuracion> findByIdMunicipio(Municipios value) {
        Query query = em.createQuery("SELECT c FROM Configuracion c WHERE c.idmunicipio = :idmunicipio");
        return query.setParameter("idmunicipio", value).getResultList();
    }

No comments: