public static List<Persona> consultaLicPer(ObjectContainer em) {

        ObjectSet<Persona> listaPer = em.query(new Predicate<Persona>() {
            private Map<String, List<LicenciaConductor>> licenciasPorCategoria = new HashMap<>();
            private Set<Departamento> deptos = new HashSet<>();

            @Override
            public boolean match(Persona p) {
                licenciasPorCategoria.clear();
                for (LicenciaConductor l : p.getLicenciasDeConducir()) {
                    if (!licenciasPorCategoria.containsKey(l.getCategoria())) {
                        licenciasPorCategoria.put(l.getCategoria(), new ArrayList<LicenciaConductor>());
                    }
                    licenciasPorCategoria.get(l.getCategoria()).add(l);
                }

                deptos.clear();
                for (List<LicenciaConductor> list : licenciasPorCategoria.values()) {
                    for (LicenciaConductor licenciaConductor : list) {
                        deptos.add(licenciaConductor.getDepartamento());
                    }
                    if (deptos.size() > 1) {
                        return true;
                    }
                }

                return false;
            }
        });

        return Arrays.asList(listaPer.toArray(new Persona[]{}));
    }