public class QuranManager {
@PersistenceContext
EntityManager em;
public static class QuranChapterSummary {
private final int chapterNum;
private final String name;
private final long verseCount;
public QuranChapterSummary(int chapterNum, String name, long verseCount) {
super();
this.chapterNum = chapterNum;
this.name = name;
this.verseCount = verseCount;
}
public int getChapterNum() {
return chapterNum;
}
public String getName() {
return name;
}
public long getVerseCount() {
return verseCount;
}
}
@Transactional(readOnly=true)
public List<QuranChapterSummary> findAllChapterSummaries() {
return em.createQuery("SELECT NEW org.soluvas.sanad.core.QuranManager$QuranChapterSummary(FIRST(c.chapterNum), FIRST(c.name), COUNT(v))"
+ " FROM QuranChapter c LEFT JOIN c.verses v").getResultList();
}
}