@Override @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW) public <T> List<T> listByUuids(List<String> uuids, int offset, int length, Class<T> clazz) { String ename = getEntityName(clazz); String sql = null; TypedQuery<T> query = null; if (uuids == null || uuids.isEmpty()) { sql = String.format("select e from %s e", ename); query = dbf.getEntityManager().createQuery(sql, clazz); } else { checkIfHasUuid(clazz); sql = String.format("select e from %s e where e.uuid in :uuids", ename); query = dbf.getEntityManager().createQuery(sql, clazz); query.setParameter("uuids", uuids); } query.setFirstResult(offset); query.setMaxResults(length); return query.getResultList(); } }