jpa - mvc - Cómo llamar a consulta con nombre
spring mvc 4 tutorial español (4)
¿Asumo que te has perdido el símbolo @ en tu anotación de NamedQuery?
En el código, lo llamarías así:
List results = em.createNamedQuery("Voter.findvoter")
.setParameter("voterID", "blah")
.setParameter("password","blahblahblah")
.getResultList();
Escribí una consulta con nombre en la clase de entidad Votante
NamedQuery(name = "Voter.findvoter", query = "SELECT count(*) FROM Voter v WHERE v.voterID = :voterID" and where v.password= : password),
Quiero llamar a esta consulta con nombre y también necesito establecer ID de usuario y contraseña.
Me puedes ayudar. Gracias
En realidad, Brent tiene razón, su NameQuery debería ser algo así.
@NamedQuery(name = "Voter.findvoter", query = "SELECT count(*) FROM Voter v WHERE v.voterID = :voterID AND where v.password = :password")
@Entity
public class Voter implements Serializable{ ... }
y en otro lugar deberías probar este (que Dick ya ha dicho)
public class VoterFasade{
public List<Voter> findVoter(long id,String password){
List<Voter> results = em.createNamedQuery("Voter.findvoter")
.setParameter("voterID", id)
.setParameter("password",password)
.getResultList();
return result;
}
}
entonces podrías usarlo como
@Inject
VoterFasade voterFasade;
///
long id=12;
voterFasade.findVoter(id);
realmente debería funcionar. (es un código no compilado).
también puede hacerlo con el Repositorio, verifique el enlace a continuación, parte Repository Listing23.Example repository ingrese la descripción del enlace aquí
Hay dos problemas obvios con su consulta nombrada que podrían causar problemas:
- Es una anotación por lo que debería ser
@NamedQuery
no soloNamedQuery
- Su consulta es actualmente:
query = "SELECT count(*) FROM Voter v WHERE v.voterID = :voterID" and where v.password= : password
.
El problema es que usted termina su Cadena después de :voterID
, en lugar de después :password
y tiene "donde" dos veces y tiene un espacio entre ":" y "contraseña". Su consulta debe verse así:
query = "SELECT count(*) FROM Voter v WHERE v.voterID = :voterID and v.password= :password"
(Acabo de mover el "al final y quité el segundo" donde "y el espacio después del": ")
Los pasos comunes son (consulta con nombre o de otra manera)
- Crear una consulta - em tiene cinco métodos de creación.
- Configure la consulta con parámetros si es necesario: la interfaz de consulta tiene estos métodos.
- Ejecute la consulta: la interfaz de consulta tiene 3 métodos relacionados con la ejecución.
con los tres pasos anteriores puede ejecutar cualquier consulta JPA.