javax.persistence.criteria.Predicate cannot be passed across methods [message #1721789] |
Sat, 30 January 2016 09:54  |
Eclipse User |
|
|
|
The following code snippet will recreate the problem, the Predicate cannot be passed to findByType2. If we call entityManager.createQuery(criteriaQuery.select(root).where(p)).getSingleResult();
in the findByType() directly, it would work fine.
Any ideas?
public MyObject findByType(final MyObject.Type type)
{
final EntityManager entityManager = getEntityManager();
final CriteriaBuilder builder = entityManager.getCriteriaBuilder();
final CriteriaQuery<MyObject> criteriaQuery = builder
.createQuery(MyObject.class);
final Root<MyObject> root = criteriaQuery.from(MyObject.class);
final Predicate p = builder.equal(
root.<MyObject.Type>get(MyObject_.type), type);
return findByType2(builder, criteriaQuery, p);
}
public MyObject findByType2(final CriteriaBuilder builder,
final CriteriaQuery<MyObject> criteriaQuery,
final Predicate p)
{
final EntityManager entityManager = getEntityManager();
final Root<MyObject> root = criteriaQuery.from(MyObject.class);
return entityManager.createQuery(
criteriaQuery.select(root).where(
p)).getSingleResult();
}
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.08898 seconds