Query q = em.createQuery(query);
List<String> queryParameters = new ArrayList<String>();
queryParameters.add("USA");
EJBQueryImpl qi = (EJBQueryImpl)q;
String sqlQueryString = qi.getDatabaseQuery().getSQLString();
System.out.println(sqlQueryString);
EJBQueryImpl countQuery = (EJBQueryImpl)em.createNativeQuery("SELECT COUNT(*) FROM (" + sqlQueryString + ") temp");
for(int i=0; i<queryParameters.size(); i++ ){
countQuery.setParameter(1+i, queryParameters.get(i));
}
System.out.println("result "+countQuery.getDatabaseQuery().getSQLString());
System.out.println(((Long)countQuery.getResultList().get(0)).intValue());
}