मैं सभी उपयोगकर्ताओं को उस फ़ोल्डर के लिए लाने की कोशिश कर रहा हूं जहां उपयोगकर्ता किसी निश्चित तिथि के बाद बनाया गया था। उपयोगकर्ता और फ़ोल्डर के बीच का रिश्ता एक अलग तालिका में रहता है।जेपीए 2 कोई स्पष्ट चयन नहीं है और एक निहित एक ठंडा निर्धारित नहीं किया गया है
इस क्वेरी मैं के साथ आया है, लेकिन यह अपवाद
कोई स्पष्ट चयन thorws और एक अंतर्निहित एक ठंड
कोड
@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;
}
किसी को भी निर्धारित नहीं किया जा पता है कि यह क्यों काम नहीं कर रहा है?