Hybris Flexiblesearch今日约会

时间:2017-08-25 09:09:04

标签: java hybris

我想知道在hybris flexiblesearch中将日期与今天日期进行比较的方法是什么。

我在网上搜索过,但我找不到怎么回事。通过下面的flexiblesearch查询,我想找到今天之前创建的产品,那么是否有某种函数可以返回今天的日期,可能与此查询类似:

 SELECT {pk} FROM {Product} 
 WHERE creationTime < NOW

感谢任何帮助

5 个答案:

答案 0 :(得分:2)

有方法但可能是特定于DB的。在MySQL上,这很好用:

 SELECT {pk} FROM {Order as o} 
 WHERE {o.creationTime} < NOW()

您也可以使用SYSDATE()

答案 1 :(得分:2)

理想情况下,应在java中拾取当前日期,然后将其发送到数据库进行查询。但是,如果您确定数据库中的日期也可以正常工作,那么

SELECT {pk} FROM {ItemType AS o} WHERE {o.date} <= CURDATE()

会起作用。

答案 2 :(得分:0)

我建议使用 timeService bean OOTB,因为这个服务有些配置用于修正本地服务时区。此外,所有日期时间操作都在标准中使用此服务。您可以将value设置为flex查询的参数。

答案 3 :(得分:0)

我不确定您是否可以编写Java代码来完成任务,但是使用Java可以定义常规的灵活搜索参数来传递日期。

例如,这里有一个类可以获取在当前时间之前创建的订单。

import de.hybris.platform.core.model.order.OrderModel;
import de.hybris.platform.servicelayer.search.FlexibleSearchQuery;
import de.hybris.platform.servicelayer.search.FlexibleSearchService;
import de.hybris.platform.servicelayer.search.SearchResult;
import de.hybris.platform.servicelayer.time.TimeService;

import javax.annotation.Resource;
import java.util.List;

public class SomeOrderDao {

    @Resource
    private FlexibleSearchService flexibleSearchService;
    @Resource
    private TimeService timeService;

    public List<OrderModel> findSomeOrders(){
        String query = "SELECT {PK} FROM {Order} WHERE {creationtime} < ?date";
        final FlexibleSearchQuery getOrdersQuery = new FlexibleSearchQuery(query);
        getOrdersQuery.addQueryParameter("date", timeService.getCurrentTime());
        SearchResult<OrderModel> searchResult = flexibleSearchService.search(getOrdersQuery);
        return searchResult.getResult();
    }

}

答案 4 :(得分:0)

您可以使用数据库中的本机资源,例如:

对于MySQL:

SELECT {pk} FROM {Product} 
WHERE creationTime < NOW()

对于ORACLE:

SELECT {pk} FROM {Product} 
WHERE creationTime < SYSDATE