0

データベースに値が存在しないため、このコードはエラーをスローし続けます。

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 com.objectdb.jpa.JpaQuery.getSingleResult(JpaQuery.java:754) で一意のクエリに一致する結果がありません (エラー 782)

4

2 に答える 2

1

例外をキャッチして null を返します。

于 2014-11-23T16:17:25.597 に答える
0

getResultListの代わりに使用できますgetSingleResult

見る:

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

于 2014-11-23T21:13:49.957 に答える