未找到jpa命名查询

未找到jpa命名查询,jpa,ejb-3.0,Jpa,Ejb 3.0,我正在将EJB2应用程序迁移到EJB3.1。这两种技术必须共存一段时间。我的一个实体bean如下所示: import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Ta

我正在将EJB2应用程序迁移到EJB3.1。这两种技术必须共存一段时间。我的一个实体bean如下所示:

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;
    }
} 
在jboss 6.1中的部署日志中,我可以看到实体已部署

 [AnnotationBinder] Binding entity from annotated class: myclass.MigracaoJsf
但是我找不到查询解析的日志。当我尝试调用它时,我得到一个查询NotFound异常。为什么实体部署正确而查询未被解析

谢谢


Kelly

您应该能够使用以下代码调用查询:

EntityManager em;
// em is created sonehow
TypedQuery<MigracaoJsf> q = em.createNamedQuery("migracao_query", MigracaoJsf.class);
EntityManager-em;
//em是由sonehow创建的
TypedQuery q=em.createNamedQuery(“migracao_query”,MigracaoJsf.class);

由于查询名称必须是唯一的,所以通常使用类名作为命名查询的前缀。因此,通过名称获取实体的查询应命名为
entity。GetByName

您应该能够使用以下代码调用该查询:

EntityManager em;
// em is created sonehow
TypedQuery<MigracaoJsf> q = em.createNamedQuery("migracao_query", MigracaoJsf.class);
EntityManager-em;
//em是由sonehow创建的
TypedQuery q=em.createNamedQuery(“migracao_query”,MigracaoJsf.class);

由于查询名称必须是唯一的,所以通常使用类名作为命名查询的前缀。因此,通过名称获取实体的查询应命名为
entity。GetByName

请在搜索查询的位置添加代码。请在搜索查询的位置添加代码。