JPA返回同一对象的很多次

时间:2014-06-03 02:50:42

标签: java sql jpa

我尝试使用jax-rs将JPA用作REST服务。我试图从实体中获取所有值。在db中只有一个对象,但是这个实体与其他实体有一对多的关系。一切都很顺利,但是当我在任何RESTclient中看到响应时(我使用POSTman)我多次得到相同的对象。

@GET
@Path("/by")
@Produces(MediaType.APPLICATION_JSON)
public List getAll() {
    Query q = entityManager.createQuery("select u from Entity u");

    List<A> x = q.getResultList();
    List<A> fg = new ArrayList<A>();
    for (int i = 0; i < x.size(); i++) {
        A l = (A) x.get(i);
        l.getMonto();
        fg.add(l);
    }
    return fg;
}

2 个答案:

答案 0 :(得分:1)

Query q = entityManager.createQuery("select u from PaymentPlan u");
PaymentPlan pp = (PaymentPlan)q.getSingleResult();

这将返回单个结果。 getSingleResult()执行返回单个无类型结果的SELECT查询。

有关详情,请参阅此链接 - http://www.objectdb.com/java/jpa/query/execute

答案 1 :(得分:0)

在没有获得目标结果之前,请不要清除EntityManager。根据您的查询,查询将从PaymentPlan表中检索所有记录。

Query q = entityManager.createQuery("select u from PaymentPlan u");
PaymentPlan paymentPlan = (PaymentPlan)q.getSingleResult();

Query q = entityManager.createQuery("select u from PaymentPlan u");
List<PaymentPlan> paymentPlanList = q.getResultList();
PaymentPlan paymentPlan = paymentPlanList.get(0);