J'ai généré des classes d'entités en utilisant Netbeans. Ma classe a une clé primaire composite, donc Netbeans a généré une classe d'entité PK supplémentaire pour moi. Je souhaite utiliser un NamedQuery dans la classe Entity mais comme le paramètre que je passe dans la requête nommée est Embedded dans la classe PK, l'appel NamedQuery échoue et la requête ne semble pas être complète.JPA NamedQueries avec entités PK
Quelqu'un peut-il donner un exemple de ce à quoi mon code devrait ressembler pour utiliser une NamedQuery qui a un PK composite (association @EmbeddedId)? Ce qui suit échoue:
classe Façade (partie):
@Stateless
public class EMyEntityFacade extends AbstractFacade<EMyEntity> {
public EMyEntityFacade() {
super(EMyEntity.class);
}
//does not work
/*
private Query queryByComp1Id(int comp1Id) {
Query query = this.getEntityManager().createNamedQuery("EMyEntity.findByComp1Id");
query.setParameter("comp1Id", comp1Id);
return query;
}
*/
//any nearer?
private Query queryByComp1d(int comp1Id) {
EMyEntityPK eMyEntityPK = new EMyEntityPK();
Query query = this.getEntityManager().createNamedQuery("EMyEntity.findByComp1Id");
eMyEntityPK.setComp1Id(comp1Id);
//how do I pass the eMyEntityPK through to the Entity so the query is well formed?
//???
return query;
}
public List<EMyEntity> findByComp1Id(int comp1Id) {
Query query = queryByComp1Id(comp1Id);
return query.getResultList();
}
classe entité (partie):
@Entity
@Table(name = "my_entity")
@NamedQueries({
@NamedQuery(name = "EMyEntity.findByComp1Id",
query = "SELECT e FROM EMyEntity e WHERE e.eMyEntityPK.comp1Id = :comp1Id"),...)})
public class EMyEntity implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected EMyEntityPK eMyEntityPK;
@Basic(optional = false)
@Column(name = "inherit_from_parent")
...
...
}
classe PK (partie):
@Embeddable
public class EMyEntityPK implements Serializable {
@Basic(optional = false)
@Column(name = "comp1_id")
private int comp1Id;
@Basic(optional = false)
@Column(name = "comp2_id")
private int comp2Id;
...
...
}
Quelle est l'erreur? – Bozho
montre l'exception et le stacktrace – Bozho
Je ne vois aucune erreur. La requête nommée est ok. Où avez-vous des problèmes? –