Hybris Flexiquery:列模糊定义

时间:2017-01-06 06:44:20

标签: hybris

我正在尝试使用pagedFlexibleSearchService触发下面的查询。

SELECT {u: PK}, {a: PK} FROM { User AS u}, {Address AS a} WHERE {u: PK} = {a: owner}

我正在配置flexibleSearchQuery以返回以下项类型:

flexiQuery.setResultClassList(UserModel.class,String.class));

我将用户模型和AddressModel pk作为字符串返回。

问题是当我通过java代码触发此查询时,它会抛出SQLException - 不明确定义的列。我注意到转换后的查询包含SELECT * FROM (SELECT....) rownum <10。 但是,当我在HAC中触发相同的弹性查询时,它执行得非常好。

有人可以告诉我这个问题是什么吗?

此致 尔汉

1 个答案:

答案 0 :(得分:0)

仅为用户(客户)进行灵活搜索会更容易:

SELECT {u: PK} FROM { User AS u}

然后,在java代码中获取每个用户的地址列表:

List<UserModel> users=getUsers();
//first user's list of addresses
Collection<AddressModel> addresses = users.get(0).getAddresses();
//the first address's(of the first user) 
PK pk = addresses.iterator().next().getPk();

getUsers方法:

private List<UserModel> getUsers() {
    FlexibleSearchQuery query = new FlexibleSearchQuery("SELECT {u: PK} FROM { User AS u}");
    return  (List) getFlexibleSearchService().search(query).getResult();
}