@SuppressWarnings("unchecked") protected <E extends Entity> List<E> executeQuery(Query query, boolean singleResult) { List<E> list; try { if (singleResult) { try { E result = (E) query.getSingleResult(); list = new ArrayList<>(1); list.add(result); } catch (NoResultException e) { list = Collections.emptyList(); } } else { list = query.getResultList(); } } catch (javax.persistence.PersistenceException e) { if (e.getCause() instanceof org.eclipse.persistence.exceptions.QueryException && e.getMessage() != null && e.getMessage().contains("Fetch group cannot be set on report query")) { throw new DevelopmentException("DataManager cannot execute query for single attributes"); } else { throw e; } } return list; }
protected String generateReportName(String sourceName, int iteration) { if (iteration == 1) { iteration++; //like in win 7: duplicate of file 'a.txt' is 'a (2).txt', NOT 'a (1).txt' } String reportName = StringUtils.stripEnd(sourceName, null); if (iteration > 0) { String newReportName = String.format("%s (%s)", reportName, iteration); if (newReportName.length() > MAX_REPORT_NAME_LENGTH) { String abbreviatedReportName = StringUtils.abbreviate(reportName, MAX_REPORT_NAME_LENGTH - String.valueOf(iteration).length() - 3);// 3 cause it us " ()".length reportName = String.format("%s (%s)", abbreviatedReportName, iteration); } else { reportName = newReportName; } } Transaction tx = persistence.createTransaction(); try { Long countOfReportsWithSameName = (Long) persistence.getEntityManager() .createQuery("select count(r) from report$Report r where r.name = :name") .setParameter("name", reportName) .getSingleResult(); tx.commit(); if (countOfReportsWithSameName > 0) { return generateReportName(sourceName, ++iteration); } } finally { tx.end(); } return reportName; }
protected boolean referenceExists(String entityName, MetaProperty property) { String template = property.getRange().getCardinality().isMany() ? "select count(e) from %s e join e.%s c where c." + primaryKeyName + "= ?1" : "select count(e) from %s e where e.%s." + primaryKeyName + " = ?1"; String qstr = String.format(template, entityName, property.getName()); Query query = entityManager.createQuery(qstr); query.setParameter(1, entity.getId()); query.setMaxResults(1); Long count = (Long) query.getSingleResult(); return count > 0; }
Long count = (Long) q.getSingleResult();
result = (Number) query.getSingleResult();