SAP Hybris FlexibleSearch报错:VARCHAR转java.lang.Long类型不兼容问题排查
问题排查与解决方案
错误根源
错误提示incompatible data type in conversion: from SQL type VARCHAR to java.lang.Long, value: customer10,核心原因是FlexibleSearch查询返回的字段与你要映射的NewCustomerModel类型不匹配:
你在查询中只选择了{NAME}(字符串类型的客户名称),但却要求返回List<NewCustomerModel>实例。Hybris在尝试用单个字符串字段构建完整模型对象时,会错误地将该字符串值赋值给模型中某个Long类型的属性(比如主键PK或者CUSTID),从而触发类型转换异常。
修复方案
根据你的需求选择以下两种方式之一:
1. 需要完整的NewCustomerModel对象
修改查询语句,选择模型的主键{PK}或者所有字段{*},让Hybris能正确加载完整模型:
@Override public List<NewCustomerModel> getCustomerNameFromID() { final StringBuilder query=new StringBuilder(); // 选择主键,Hybris会根据主键加载完整模型 query.append("SELECT {PK} FROM {" + NewCustomerModel._TYPECODE + "} WHERE {"+ NewCustomerModel.CUSTID + "}=1"); final FlexibleSearchQuery flexQuery = new FlexibleSearchQuery(query); final SearchResult<NewCustomerModel> searchResult = flexibleSearchService.search(flexQuery); if (CollectionUtils.isNotEmpty(searchResult.getResult())) { return searchResult.getResult(); } return Collections.EMPTY_LIST; }
或者选择所有字段:
query.append("SELECT {*} FROM {" + NewCustomerModel._TYPECODE + "} WHERE {"+ NewCustomerModel.CUSTID + "}=1");
2. 仅需要客户名称字符串
如果只需要获取客户名称,无需完整模型,修改返回类型为List<String>,并指定查询结果类型:
@Override public List<String> getCustomerNameFromID() { final StringBuilder query=new StringBuilder(); query.append("SELECT {" + NewCustomerModel.NAME + "} FROM {" + NewCustomerModel._TYPECODE + "} WHERE {"+ NewCustomerModel.CUSTID + "}=1"); final FlexibleSearchQuery flexQuery = new FlexibleSearchQuery(query); // 指定结果类型为String flexQuery.setResultClassList(Collections.singletonList(String.class)); final SearchResult<String> searchResult = flexibleSearchService.search(flexQuery); if (CollectionUtils.isNotEmpty(searchResult.getResult())) { return searchResult.getResult(); } return Collections.EMPTY_LIST; }
额外排查建议
- 检查
NewCustomerModel的属性定义:确认CUSTID的类型是否与查询条件匹配。如果CUSTID是String类型,查询条件应改为='1'(带单引号),避免数据库隐式类型转换出错。 - 开启查询详情日志:在
local.properties中添加flexible.search.exception.show.query.details=true,这样后续报错会显示生成的SQL语句,更便于定位问题。
内容的提问来源于stack exchange,提问作者user19030239
相关产品推荐
相关产品推荐

