Один из подходов состоит в том, чтобы все запросы были написаны так, чтобы они идентифицировались по идентификатору пользователя (присоединенному к таблице пользователей), а затем ваш DAO автоматически извлекает идентификатор пользователя из UserContext и добавляет его в критерии / запрос, еслипользователь не имеет роли ADMIN.