Ошибка проекции в DataManager
После применения ограничений для пользователя
Applied row-level constraint to [User where={{E}.username = :current_user_username}] for user [user1] by io.jmix.securitydata.constraint.ReadEntityQueryConstraint
если мапить в UserDto, получаем ошибку
Errors found for input jpql:[select newdev.palestiner.jmixdatamanagerbag.entity.UserDto(u.username) from User u where u.username = :current_user_username]
CommonErrorNode [<mismatched token: [@11,58:58='(',<27>,1:58], resync=(u.username) from User u>]
io.jmix.data.impl.jpql.JpqlSyntaxException: Errors found for input jpql:[select newdev.palestiner.jmixdatamanagerbag.entity.UserDto(u.username) from User u where u.username = :current_user_username]
CommonErrorNode [<mismatched token: [@11,58:58='(',<27>,1:58], resync=(u.username) from User u>]
at io.jmix.data.impl.jpql.Parser.checkTreeForExceptions(Parser.java:112)
at io.jmix.data.impl.jpql.Parser.parse(Parser.java:40)
at io.jmix.data.impl.jpql.QueryTree.<init>(QueryTree.java:50)
at io.jmix.data.impl.jpql.QueryTree.<init>(QueryTree.java:40)
at io.jmix.data.impl.jpql.QueryParserAstBased.getTree(QueryParserAstBased.java:74)
at io.jmix.data.impl.jpql.QueryParserAstBased.getAnalyzer(QueryParserAstBased.java:88)
at io.jmix.data.impl.jpql.QueryParserAstBased.getParamNames(QueryParserAstBased.java:95)
at io.jmix.eclipselink.impl.JmixEclipseLinkQuery.processParams(JmixEclipseLinkQuery.java:629)
Ограничения
@ResourceRole(name = "минимальный доступ", code = MinimalRole.CODE, scope = SecurityScope.API)
public interface MinimalRole {
String CODE = "minimal-role";
@EntityPolicy(entityClass = User.class, actions = {READ, UPDATE})
@EntityAttributePolicy(entityClass = User.class, attributes = "*", action = MODIFY)
void users();
@SpecificPolicy(resources = "rest.enabled")
void rest();
}
@RowLevelRole(name = "MinimalRow", code = MinimalRowRole.CODE)
public interface MinimalRowRole {
String CODE = "minimal-row";
@JpqlRowLevelPolicy(entityClass = User.class, where = "{E}.username = :current_user_username")
void users();
}
Запуск
./gradlew test --tests "dev.palestiner.jmixdatamanagerbag.user.UserTest"