@Override public Map<String, Long> countInstallationsByType(String pushApplicationID) { final String jpql = "select v.type, v.variantID, count(*) from Installation i join i.variant v where i.variant.variantID in " + "(select v.variantID from PushApplication pa join pa.variants v where pa.pushApplicationID = :pushApplicationID) " + "group by v.type, v.variantID"; final HashMap<String, Long> results = new HashMap<>(); for (VariantType type : VariantType.values()) { results.put(type.getTypeName(), 0L); } final TypedQuery<Object[]> query = createQuery(jpql, Object[].class) .setParameter("pushApplicationID", pushApplicationID); query.getResultList().forEach(result -> { final Long value = (Long) result[2]; final VariantType variantType = (VariantType) result[0]; results.put(variantType.getTypeName(), results.get(variantType.getTypeName()) + value); results.put((String) result[1], value); }); return results; }
@Override public Map<String, Long> countInstallationsByType(String pushApplicationID) { final String jpql = "select v.type, v.variantID, count(*) from Installation i join i.variant v where i.variant.variantID in " + "(select v.variantID from PushApplication pa join pa.variants v where pa.pushApplicationID = :pushApplicationID) " + "group by v.type, v.variantID"; final HashMap<String, Long> results = new HashMap<>(); for (VariantType type : VariantType.values()) { results.put(type.getTypeName(), 0L); } final TypedQuery<Object[]> query = createQuery(jpql, Object[].class) .setParameter("pushApplicationID", pushApplicationID); query.getResultList().forEach(result -> { final Long value = (Long) result[2]; final VariantType variantType = (VariantType) result[0]; results.put(variantType.getTypeName(), results.get(variantType.getTypeName()) + value); results.put((String) result[1], value); }); return results; }