Поддержка критериев данных 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