唯一查询没有匹配的结果(错误782)

时间:2014-11-23 16:16:19

标签: java jpa criteria-api objectdb

此代码不断抛出错误,因为数据库中没有任何值:

public Foo getFoo(Parent p1, Parent p2) {
    EntityManager entityManager = entityManagerFactory.createEntityManager();
    CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
    CriteriaQuery<Foo> criteriaQuery = criteriaBuilder.createQuery(Foo.class);
    Root<Foo> root = criteriaQuery.from(Foo.class);
    criteriaQuery.select(root).where(criteriaBuilder.and(
            criteriaBuilder.equal(root.get("p1"), entityManager.find(Parent.class, p1)),
            criteriaBuilder.equal(root.get("p2"), entityManager.find(Parent.class, p2))
    ));
    return entityManager.createQuery(criteriaQuery).getSingleResult();
}

我更喜欢它只是返回一个null对象。有没有办法可以做到这一点?

异常被抛出这一行:

Foo foo = fooDao.getFoo(p1, p2);

  

[ObjectDB 2.5.7_03] javax.persistence.NoResultException无匹配   唯一查询的结果(错误782)at   com.objectdb.jpa.JpaQuery.getSingleResult(JpaQuery.java:754)

2 个答案:

答案 0 :(得分:1)

捕获异常并返回null。

答案 1 :(得分:0)

您可以使用getResultList代替getSingleResult

请参阅:

http://www.objectdb.com/java/jpa/query/execute