未找到jpa命名查询
我正在将EJB2应用程序迁移到EJB3.1。这两种技术必须共存一段时间。我的一个实体bean如下所示:未找到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
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
请在搜索查询的位置添加代码。请在搜索查询的位置添加代码。