【问题标题】:How to restrict with flexible search query in Hybris for single table using session attribute?如何在 Hybris 中使用会话属性限制单个表的灵活搜索查询?
【发布时间】:2018-05-08 11:34:48
【问题描述】:

我正在尝试使用有限制的灵活搜索。 我有一个会话属性 (?session.userGroups) 并希望使用此组列表进行过滤。

如果您尝试过滤的给定表包含您要过滤的对象,我已经在 SAP 文档中看到了如何执行此操作。例如 {country} IN (?session.countries}。表中存在 {country}。

但是我将如何直接在国家/地区表上进行过滤。

或者在我的情况下,我想直接过滤 UserGroup 表。

我可以使用什么属性。可能是 {pk},但 session 属性包含对象本身,而不仅仅是 PK。

{pk} IN (?session.usergroups} --不确定这是否正确

{这里发生了什么} IN (?session.usergroups}

【问题讨论】:

    标签: jakarta-ee hybris


    【解决方案1】:

    假设您正在会话中保存用户组对象列表

    例如:

    Set<UserGroupModel> usergroups = userService.getAllUserGroupsForUser(user);
    sessionService.setAttribute("userGroups", usergroups);
    

    现在有两种方法:

    使用 SearchRestriction/Personalization -(搜索限制将影响客户组网站的所有位置)

    INSERT_UPDATE SearchRestriction;code[unique=true];name[lang=en];query;principal(UID);restrictedType(code);active;generate
    ;usergroup_restriction;Restrict UserGroups visibility;{item:PK} IN (?session.userGroups);customergroup;UserGroup;true;true;
    

    直接在 FlexibleSearchQuery 中应用搜索条件 -

    灵活搜索查询->

    String queryString = "Select {PK} from {UserGroup} where {PK} in (?usergroups)"
    final FlexibleSearchQuery query = new FlexibleSearchQuery(queryString);
    query.addQueryParameter("usergroups", sessionService.getAttribute("userGroups"));
    return flexibleSearchService.search(query);
    

    【讨论】:

      猜你喜欢
      • 2017-09-14
      • 1970-01-01
      • 1970-01-01
      • 2022-11-29
      • 1970-01-01
      • 2018-05-06
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多