我正在尝试使用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中触发相同的弹性查询时,它执行得非常好。
有人可以告诉我这个问题是什么吗?
此致 尔汉
答案 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();
}