Поддержка критериев данных Deltaspike - Можно ли запрашивать наборы enum?

Мне действительно нравится использовать критерии API из модуля Deltaspike Data. На данный момент у меня есть проблема, что мне нужно запросить enumset.

Структура класса выглядит следующим образом:

class BuildPart {
    String name;
    Set< Permission > permissions
}

class Permission {
    Long userid;
    Set<PermissionType> permissionTypes;
}

enum PermissionType {
    CREATE, READ, EDIT, DELETE
}

я хочу запросить BuildParts, где userid = 2 имеет права на чтение, я попытался:

criteria()
  .join(BuildPart_.permissions,
    where (Permission.class)
    .eq(Permission_.userid, 2L)
  )
  .join(Permission_.permissionTypes,
    where(PermissionType.class)
    .eq(PermissionType.READ) <--- NOT possible
  )

функция eq, а также функция in всегда требуют параметр SingularAttribute.

при использовании критериев JPA, я получил это просто работая:

SetJoin<BuildPart, Permission> permissionJoin = root.join(BuildPart_.permissions);
Predicate readPermissions = criteriaBuilder.and(
    criteriaBuilder.equal(
        permissionJoin.get(Permission_.userid),
        2L,
    criteriaBuilder.isMember(
        PermissionType.READ, 
        permissionJoin.get(Permission_.permissionTypes)));

Есть ли способ, как я мог бы достичь такого запроса? (возможно, с обходным путем) Большое спасибо за любую идею

Shannon

0 ответов

Другие вопросы по тегам