En passant par deux paramètres à une requête nommée
J'ai le texte suivant namedquery sur mon entité "Intervention ":
@NamedQuery(name = "Intervention.findNextMission", query = " SELECT i FROM Intervention i WHERE i.heureDebut> :DateToBeSpecified and i.idAgent= :idAgent")`
je ne sais pas comment appeler cette requête dans mon code par le passage de deux paramètres : la date,l'id. Normalement, il devrait être comme ceci :
List <Intervention> ListOfInterventions = em.createNamedQuery("Intervention.findNextMission").setParameter().getResultList();
quoi mettre entre les parenthèses de setParameter() ??
voici le code de mon entité d'Intervention :
@Entity
@Table(name = "intervention")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Intervention.findAll", query = "SELECT i FROM Intervention i"),
@NamedQuery(name = "Intervention.findByIdIntervention", query = "SELECT i FROM Intervention i WHERE i.idIntervention = :idIntervention"),
@NamedQuery(name = "Intervention.findByHeureDebut", query = "SELECT i FROM Intervention i WHERE i.heureDebut = :heureDebut"),
@NamedQuery(name = "Intervention.findByHeureFin", query = "SELECT i FROM Intervention i WHERE i.heureFin = :heureFin"),
@NamedQuery(name = "Intervention.findNextMission", query = " SELECT i FROM Intervention i WHERE i.heureDebut> :DateToBeSpecified and i.idAgent= :idAgent")})
public class Intervention implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 50)
@Column(name = "IdIntervention", nullable = false, length = 50)
private String idIntervention;
@Basic(optional = false)
@NotNull
@Column(name = "HeureDebut", nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date heureDebut;
@Basic(optional = false)
@NotNull
@Column(name = "HeureFin", nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date heureFin;
@Lob
@Size(max = 65535)
@Column(name = "NotesGeneral", length = 65535)
private String notesGeneral;
@JoinColumn(name = "IdValidation", referencedColumnName = "IdValidation", nullable = false)
@ManyToOne(optional = false)
private Tablevalidation idValidation;
@JoinColumn(name = "IdNatureIntervention", referencedColumnName = "IdNatureIntervention", nullable = false)
@ManyToOne(optional = false)
private Tablenatureintervention idNatureIntervention;
@JoinColumn(name = "IdAgent", referencedColumnName = "IdAgent", nullable = false)
@ManyToOne(optional = false)
private Agent idAgent;
@JoinColumn(name = "RefContrat", referencedColumnName = "RefContrat", nullable = false)
@ManyToOne(optional = false)
private Projet refContrat;
public Intervention() {
}
//getters and setters
}
Vous devez vous connecter pour publier un commentaire.
setParameter
accepte(int position,Object value)
ou(String parameterName,Object value)
. Ainsi, votre code pourrait ressembler à ce qui:Notez que lorsque vous utilisez un
Date
vous devez spécifier leTemporalType
prévu.Intervention
objet.Intervention.idAgent
est en fait unAgent
exemple, donc je vous suggère de modifier la requête pour renvoyer l'id sur leAgent
type comme dans " ... j'.idAgent.idAgent=:idAgent ... ` (en supposant queAgent.idAgent
est une Chaîne)