Как преобразовать гибкий запрос HA C в запрос DAO - PullRequest
0 голосов
/ 27 февраля 2020

Я использую ниже гибкий запрос в HM C, и он работает нормально.

Этот же запрос должен преобразовать слой DAO, а входные данные - это параметр данных. Пожалуйста, помогите?

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

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

См. DefaultProductDao и создайте его по своему требованию, или вы можете расширить его, если хотите повторно использовать любую функцию. Я надеюсь, что, посмотрев на этот класс, вы поймете, как написать и выполнить запрос flexi в SAP Hybris.

Преобразование вашего запроса в DAO
Здесь, Я бы рекомендовал избегать использования TO_DATE или любой функции БД, чтобы гарантировать, что запрос не зависит от БД. В вашем случае вы можете разобрать строковую дату в Java объект Date и передать ее в запрос, как показано ниже

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();

Method

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
}
...