如何正确地将灵活的搜索查询转换为Java最终字符串查询?

如何正确地将灵活的搜索查询转换为Java最终字符串查询?,java,hybris,flexible-search,Java,Hybris,Flexible Search,我正在尝试在Hybris Commerce上创建一个Web服务,以从模型返回数据。我的查询适用于灵活的搜索控制台,但我在Java中的方法存在语法问题 我的灵活搜索查询: select * from {address as a join customerenvasado as c on {a:owner} = {c:pk}} where {c:rut} like '1754%' 我的错误: {"errors": [{ "message": "type code 'a: owner' i

我正在尝试在Hybris Commerce上创建一个Web服务,以从模型返回数据。我的查询适用于灵活的搜索控制台,但我在Java中的方法存在语法问题

我的灵活搜索查询:

select * from {address as a join customerenvasado as c on {a:owner} = {c:pk}} where {c:rut} like '1754%' 
我的错误:

{"errors": [{
    "message": "type code 'a: owner' invalid",
    "type": "FlexibleSearchError"
}]}
我的职能:

public AddressModel getCustomerEnvasadoForRut(String rut) {
    validateParameterNotNull(rut, "Rut must not be null!");
    final String querys = "SELECT * FROM {a: " + AddressModel._TYPECODE + " as a join " + CustomerEnvasadoModel._TYPECODE + " as c on {a:owner} = {c:pk}} where {c:rut} like ?ParamRut";

    final FlexibleSearchQuery query = new FlexibleSearchQuery(querys);
    query.addQueryParameter("ParamRut", rut);
    List<AddressModel> result = getFlexibleSearchService().<AddressModel>search(querys).getResult();
    if (result != null && !result.isEmpty()) {
        return result.get(0);
    }
    return null;
}
公共地址模型GetCustomerEnvsadoForrut(字符串rut){
validateParameterNotNull(rut,“rut不能为null!”);
最后一个字符串querys=“SELECT*FROM{a:”+AddressModel.\u TYPECODE+”作为联接“+CustomerEnvasadoModel.\u TYPECODE+”作为{a:owner}={c:pk}}上的c,其中{c:rut}类似于?ParamRut”;
最终FlexibleSearchQuery查询=新的FlexibleSearchQuery(查询);
query.addQueryParameter(“ParamRut”,rut);
列表结果=getFlexibleSearchService().search(querys).getResult();
if(result!=null&&!result.isEmpty()){
返回结果get(0);
}
返回null;
}

只需按以下方式更改您的查询,它就可以工作了:

SELECT {pk} FROM {Address AS a JOIN customerenvasado AS c ON {a:owner} = {c:pk}} WHERE {c:rut} LIKE '1754%'
除了上面给出的查询,您还可以使用以下查询:

SELECT {pk} FROM {Address AS a}, {customerenvasado AS c} WHERE {a:owner} = {c:pk} AND {c:rut} LIKE '1754%'
您的错误如下:

“从{a::+AddressModel.\u TYPECODE


删除“a:”就行了。

行了!我正在读这篇文章,我发现了这个问题。你回答可以。作为补充:hybris中的查询在你选择PK时返回所有属性值。我的新查询:final String queryString=“select”+CustomerEnvasadoModel.PK+”来自“+”{”+CustomerEnvasadModel._TYPECODE+“as c连接”+AddressModel._TYPECODE+“as a在”+“{c:“+CustomerEnvasadModel.DEFAULTSHIPMENTADDRESS+”}={a:“+AddressModel.PK+”}。。。。。