2012-04-16 4 views
2

Je migre une application ejb 2 vers ejb 3.1. Les deux technologies devront coexister pendant un certain temps. Un de mes haricots entité ressemble à ceci:requête nommée jpa introuvable

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.Id; 
import javax.persistence.NamedQueries; 
import javax.persistence.NamedQuery; 
import javax.persistence.Table; 

@Entity 
@Table(name = "migracao_jsf") 
@NamedQueries({ 
    @NamedQuery(name = "migracao_query", query = "select p from MigracaoJsf p") 
    }) 
public class MigracaoJsf implements Serializable { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 


    @Column(name = "name") 
    @Id 
    private String name; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

Sur les journaux de déploiement dans jboss 6.1 Je peux voir que l'entité a été déployée.

[AnnotationBinder] Binding entity from annotated class: myclass.MigracaoJsf 

Mais je ne trouve pas le journal pour l'analyse de la requête. Et quand j'essaie de l'appeler, je reçois une requête non trouvée. Pourquoi l'entité est-elle correctement déployée et la requête n'est pas analysée?

Merci

Kelly

+0

Veuillez ajouter du code lorsque vous recherchez une requête. – JMelnik

Répondre

0

Vous devriez être en mesure d'appeler la requête en utilisant le code suivant:

EntityManager em; 
// em is created sonehow 
TypedQuery<MigracaoJsf> q = em.createNamedQuery("migracao_query", MigracaoJsf.class); 

En outre, il est pratique courante de préfixer les requêtes nommées avec le nom de la classe depuis requête les noms doivent être uniques. Ainsi, une requête pour obtenir une entité par son nom doit être nommée Entity.GetByName.

Questions connexes