@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();
}
}