java.lang.IllegalArgumentException: requête Nommée non trouvé:
J'ai eu le code suivant
@Stateless
public class BondecomandeDAO {
@PersistenceContext
private EntityManager em;
public Bondecommande findBCbyid(int id)
{
Query q =em.createNamedQuery("select bc from Bondecommande bc where bc.idbc = :idbc");
q.setParameter("idbc", id);
return (Bondecommande) q.getResultList().get(0);
}
}
et
@Entity
@Table(name="bondecommande")
public class Bondecommande implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="idbc")
private int idbc;
@Column(name="devise")
private String devise;
@Column(name="modepaiement")
private String modepaiement;
@Column(name="modelivraison")
private String modelivraison;
@Column(name="delaipaiement")
private int delaipaiement;
////other attributes , getters and setters
}
Lorsque j'essaie d'exécuter la fonction findBCbyid(int id)
, j'obtiens cette erreur
java.lang.IllegalArgumentException: requête Nommée non trouvé: sélectionnez bc à partir de Bondecommande colombie-britannique, où la colombie-britannique.idbc = :idbc
Bien que j'ai utilisé cette requête nommée dans un autre projet, et cela a fonctionné, ce qui pourrait être le problème?
OriginalL'auteur Bellil Med Samouel | 2013-12-10
Vous devez vous connecter pour publier un commentaire.
Utilisation
em.createQuery(...
au lieu d'em.createNamedQuery()Si vous travaillez avec des requêtes nommées (ce que je recommande), vous devez placer la requête à l'intérieur d'un @NamedQuery annotation sur votre classe d'entité.
OriginalL'auteur thomas.scheuchzer
En JPA requête et la requête nommée ne sont pas les mêmes choses.
Requêtes nommées ont des "noms" et de les définir par l'ajout de
@NamedQueries
annotation sur votre type d'entité de la classe:Vous utilisez des requêtes nommées en passant le nom de la requête pour créer de la méthode:
Je recommande d'utiliser
TypedQuery<T>
pasQuery
si vous êtes en utilisant JPA 2.xOriginalL'auteur Flying Dumpling
createNamedQuery()
prend un nom d'une requête et non dans la requête elle-même.La Requête peut être définie par une annotation
@NamedQuery
Jetez un oeil à ceci:
http://docs.oracle.com/javaee/6/api/javax/persistence/NamedQuery.html
OriginalL'auteur treeno
après
em.createQuery
ici, et bonneOriginalL'auteur matos