Estoy tratando de buscar a todos los usuarios de una carpeta donde el usuario fue creado después de una fecha determinada. la relación entre el usuario y la carpeta vive en una mesa separada.JPA 2 No se ha determinado ninguna selección explícita ni implícita fría
Ésta es la pregunta que se me ocurrió pero thorws la excepción
ninguna selección explícita y una implícita una fría no se puede determinar
El código
@Override
public List<RetailPostUserTbl> getNewUsersForSiteSince(Date date, Integer siteId)
{
List<RetailPostUserTbl> toReturn = new ArrayList<RetailPostUserTbl>();
EntityManager em = getEntityManager();
CriteriaBuilder cb = em.getCriteriaBuilder();
Class<RpUserFolderMapTbl> userFolderPC = userFolderMapDAO.getPersistentClass();
CriteriaQuery<RpUserFolderMapTbl> mapQuery = cb.createQuery(userFolderPC);
Root<RpUserFolderMapTbl> root = mapQuery.from(userFolderPC);
Path<Integer> folderIdPath = root.get(RpUserFolderMapTbl_.folder).get(FolderTbl_.folderId);
Predicate folderCondition = cb.equal(folderIdPath, siteId);
Subquery<RetailPostUserTbl> rpSubQ = mapQuery.subquery(persistentClass);
Root<RetailPostUserTbl> subQRoot = rpSubQ.from(persistentClass);
Path<UserTbl> userPath = subQRoot.get(RetailPostUserTbl_.user);
Path<Date> userCreatedPath = userPath.get(UserTbl_.userCreateDate);
Predicate userCreateDateCondition = cb.greaterThanOrEqualTo(userCreatedPath, date);
rpSubQ.where(userCreateDateCondition);
mapQuery.where(cb.and(folderCondition, cb.exists(rpSubQ)));
TypedQuery<RpUserFolderMapTbl> query = em.createQuery(mapQuery);
List<RpUserFolderMapTbl> results = query.getResultList();
for (RpUserFolderMapTbl result : results)
{
RetailPostUserTbl rpuser = result.getUser().getRetailPostUser();
toReturn.add(rpuser);
}
return toReturn;
}
Cualquiera ¿Sabes por qué esto no está funcionando?