Для поиска данных в БД удобно использовать createQuery. Ниже показан пример, как вернуть количество записей по Имени параметра явно указанного
в setParameter, а также по порядковому номеру(обозначение ?1)


	public EntityManager em = Persistence.createEntityManagerFactory("JPA").createEntityManager();

	public long getCountByHobbyByNamedParameters(HobbyEnum hobbyEnum) {
		long countRecords =  em.createQuery("SELECT COUNT(s.hobby) FROM STUDENTS s WHERE s.hobby =  :hobby", Long.class).
				setParameter("hobby", hobbyEnum).getSingleResult();
		System.out.println("Count records by hobby  " + hobbyEnum + " = " + countRecords);			
		return countRecords;
	}
	
	
	public long getCountByHobbyByOrdinalParameters(HobbyEnum hobbyEnum) {
		long countRecords =  em.createQuery("SELECT COUNT(s.hobby) FROM STUDENTS s WHERE s.hobby =  ?1", Long.class).
				setParameter(1, hobbyEnum).getSingleResult();
		System.out.println("Count records by hobby  " + hobbyEnum + " = " + countRecords);		
		return countRecords;
	}

Реклама