2

ejb 2 アプリケーションを ejb 3.1 に移行しています。両方のテクノロジーは、しばらく共存する必要があります。私のエンティティ Bean の 1 つは次のようになります。

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

しかし、クエリ解析のログが見つかりません。そして、それを呼び出そうとすると、クエリが見つからないという例外が発生します。エンティティが正しくデプロイされているのに、クエリが解析されないのはなぜですか?

ありがとう

ケリー

4

1 に答える 1

0

次のコードを使用してクエリを呼び出すことができるはずです。

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

また、クエリ名は一意でなければならないため、名前付きクエリの前にクラス名を付けるのが一般的です。したがって、名前でエンティティを取得するクエリには、名前を付ける必要がありますEntity.GetByName

于 2012-06-05T16:23:57.827 に答える