6

チケット モンスターのチュートリアル ( http://www.jboss.org/jdf/examples/ticket-monster/tutorial/Introduction/ ) に従い、残りのサービス クラスをソリューションに追加しました。

package projectFoo.rest;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import projectFoo.model.party;


@Path("/partys")
@RequestScoped
public class partyService {

@Inject
private EntityManager em;

@GET
@Produces(MediaType.APPLICATION_JSON)
 public List<party> getAllEvents() {
    @SuppressWarnings("unchecked")
    final List<party> results =
            em.createQuery(
            "select e from party e order by e.name").getResultList();
    return results;
}
}

@Inject に下線が引かれ、次のように返されます。

パッケージを展開しようとすると、プロセスが失敗し、次のメッセージが返されます。

Unsatisfied dependencies for type [EntityManager] with qualifiers [@Default] at injection point.

Entity Manager の Bean を追加する必要がありますか? これはどのように見えるべきですか?チュートリアルではこれについて言及していません。実際、最後のチケット モンスター プロジェクトでは、Bean の定義を見つけることができませんでした。

4

1 に答える 1

9

これEntityManagerは、CDIが有効になっていないアーティファクトにあります(JPAプロバイダーjarには含まれていませんbeans.xml)。

の「古き良き」@PersistenceContextアノテーション@Injectを使用するか、を使用する場合は@Inject、次のようにEntityManagerのプロデューサーを提供する必要があります。

class Resources {
   @SuppressWarnings("unused")
   @Produces
   @PersistenceContext
   private EntityManager em;
...
于 2013-03-14T15:39:25.653 に答える