如何使用会话属性在 Hybris 中限制单个 table 的灵​​活搜索查询?

How to restrict with flexible search query in Hybris for single table using session attribute?

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

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

但是我如何直接对国家 table 进行过滤之类的操作。

或者在我的例子中,我想直接过滤用户组 table。

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

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

{这里是什么} IN (?session.usergroups}

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

例如:

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 中应用搜索条件 -

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);