JPQL, Как НЕ выбрать что-то

Другая опция (с очень гибкой лицензией) состоит в том, чтобы портировать алгоритм от VTK:

vtkDelaunay2D

Этот алгоритм работает довольно хорошо. Используя его непосредственно возможно, но требует ссылок на VTK, который может иметь больше служебное, чем Вы хотите (хотя это имеет много других хороших функций, также).

Это поддерживает ограничения (дыры/границы/и т.д.), а также триангулирование поверхности, которая находится не обязательно в плоскости XY. Это также поддерживает некоторые функции, которые я не видел в другом месте (см. примечания по значениям Alpha).

12
задан Johan - reinstate Monica 24 February 2013 в 16:28
поделиться

4 ответа

Правильный синтаксис JPQL с использованием подзапроса:

SELECT p FROM ProcessUser p
 WHERE p.id  NOT IN (
  SELECT p2.id FROM ProcessUser p2
    JOIN p2.roles role
   WHERE role.name='sysadmin'
 )
18
ответ дан 2 December 2019 в 18:20
поделиться

Будет ли это работать для вас?

SELECT *
FROM ProcessUser
WHERE Exists
(
    SELECT 1
    FROM 
        ProcessUserRoles
        INNER JOIN Roles
            ON Roles.RoleId = ProcessUserRoles.RoleId
    WHERE 1=1
        AND ProcessUser.ProcessUserId = ProcessUserRoles.ProcessUserId
        AND Roles.RoleDescription = 'Super User'
)
1
ответ дан 2 December 2019 в 18:20
поделиться

Ваш запрос в основном возвращает список пользователей / ролей, так как у вашего пользователя две роли, он возвращается дважды, вы отфильтровываете одну строку, исключая роль 'sysadmin'. Похоже, вы хотите исключить всех пользователей, имеющих роль «системного администратора», независимо от того, есть ли у них другие роли. Вам нужно будет добавить что-то к вашему запросу, например. (Я исхожу по вашему запросу, а не по вашему описанию)

  where processuse0_.id not in 
  select ( userId  from 
           ProcessUserRoles
           inner join 
           Role 
           on ProcessUserRoles.roleId=Role.id 
           where role.name != 'sysadmin'

           )
1
ответ дан 2 December 2019 в 18:20
поделиться

Выполнить вложенный запрос. Сначала выберите всех пользователей с ролью системного администратора. Затем выберите дополнение к этому результату или всех пользователей, которых нет в этом результате.

0
ответ дан 2 December 2019 в 18:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: