如何将HAC灵活查询转换为DAO查询



我在HMC中使用了下面的灵活查询,它运行得很好。

相同的查询需要转换DAO层,并且输入是一个数据参数。请帮忙吗?

SELECT * FROM {Product} WHERE {creationtime} >= TO_DATE('2020/02/19','YYYY/MM/DD')

创建Flexiqeries和相应DAO代码的完整而权威的指南。

参考DefaultProductDao并为您的需求创建一个,如果您想重用任何函数,也可以扩展它。我希望通过看这门课,您将了解如何在SAP Hybris中编写和执行灵活查询。

将查询转换为DAO
这里,我建议避免使用TO_DATE或任何DB函数,以确保查询不依赖于DB。在您的情况下,您可以将字符串日期解析为JavaDate对象,并将其传递给查询,类似于下面的

String query = "SELECT * FROM {"+ ProductModel._TYPECODE +"} WHERE {"+ ProductModel.CREATIONTIME +"} >= ?"+ProductModel.CREATIONTIME;
final FlexibleSearchQuery searchQuery = new FlexibleSearchQuery(query);
final Map<String, Object> params = new HashMap<String, Object>();
params.put(ProductModel.CREATIONTIME, getDateObject("2020/02/19"));
searchQuery.addQueryParameters(params);
final SearchResult searchResult = getFlexibleSearchService().search(searchQuery);
return searchResult.getResult();

方法

private Date getDateObject(String date)
{
// logic to parse your string date (YYYY/MM/DD) to java Date object
return new Date(); //return your parsed date object here
}

最新更新