hi,
I wonder why findAll() method in

http://svn.apache.org/viewvc/syncope/tags/syncope-1.1.2/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/UserDAOImpl.java?view=co

excludes user within membershib table?

the query created by this function doesn't make any sense for me

private StringBuilder getFindAllQuery(final Set<Long> adminRoles) {
        final StringBuilder queryString = new StringBuilder("SELECT id
FROM SyncopeUser WHERE *id NOT IN* (");

        if (adminRoles == null || adminRoles.isEmpty()) {
            queryString.append("SELECT syncopeUser_id AS id FROM Membership");
        } else {
            queryString.append("SELECT syncopeUser_id FROM Membership
M1 ").append("WHERE syncopeRole_id IN (");
            queryString.append("SELECT syncopeRole_id FROM Membership
M2 ").append(
                    "WHERE M2.syncopeUser_id=M1.syncopeUser_id
").append("AND syncopeRole_id NOT IN (");

            queryString.append("SELECT id AS syncopeRole_id FROM SyncopeRole");
            boolean firstRole = true;
            for (Long adminRoleId : adminRoles) {
                if (firstRole) {
                    queryString.append(" WHERE");
                    firstRole = false;
                } else {
                    queryString.append(" OR");
                }

                queryString.append(" id=").append(adminRoleId);
            }

            queryString.append("))");
        }
        queryString.append(")");

        return queryString;

}

* how can i query all users even those with memberships?*

Reply via email to