6

我只是按照ticket-monster 教程(http://www.jboss.org/jdf/examples/ticket-monster/tutorial/Introduction/)并在我的解决方案中添加了一个rest-service 类。

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 带有下划线,返回:“没有 bean 有资格注入到注入点 [JSR-299 §5.2.1]”

当我尝试部署包时,该过程将失败并返回以下消息:

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

我是否必须为实体管理器添加一个 bean?这个应该怎么看?本教程没有提到这一点。实际上我在最终的ticket-monster 项目中找不到任何bean 的定义。

4

1 回答 1

9

可以在未启用 CDI的EntityManager工件中找到(JPA 提供程序 jar 没有beans.xml包含)。

您可以在 的 中使用“good old”@PersistenceContext注释@Inject,或者如果您想使用@Inject,则需要为 EntityManager 提供一个生产者,如下所示:

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