Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Flexiblesearch error: missing values

Hybris Console :

ERROR [hybrisHTTP19] [FlexibleSearch] Flexiblesearch error: missing values for [emailId, productCode], got {13=8796135981138, issent=false, productcode =0100, emailid ='[email protected]'}
ERROR [hybrisHTTP19] [FlexibleSearch] query was 'SELECT {p:pk} FROM {NotifyStock AS p} WHERE {p:status}=?isSent AND {p:productId}=?productCode AND {p:emailId}=?emailId '
ERROR [hybrisHTTP19] [FlexibleSearch] translated query was: SELECT  item_t0.PK  FROM notifystock item_t0 WHERE ( item_t0.p_status =? AND  item_t0.p_productid =? AND  item_t0.p_emailid =?) AND (item_t0.TypePkString=? )
Aug 31, 2015 6:51:35 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [DispatcherServlet] in context with path [/store] threw exception [Request processing failed; nested exception is de.hybris.platform.servicelayer.search.exceptions.FlexibleSearchException: missing values for [emailId, productCode], got {13=8796135981138, issent=false, productcode =0100, emailid ='[email protected]'}] with root cause
de.hybris.platform.jalo.flexiblesearch.FlexibleSearchException: missing values for [emailId, productCode], got {13=8796135981138, issent=false, productcode =0100, emailid ='[email protected]'}[HY-0]
        at de.hybris.platform.persistence.flexiblesearch.TranslatedQuery.removeUnusedValues(TranslatedQuery.java:274)
        at de.hybris.platform.jalo.flexiblesearch.FlexibleSearch.search(FlexibleSearch.java:1423)
        at de.hybris.platform.jalo.flexiblesearch.FlexibleSearch.search(FlexibleSearch.java:1627)
        at de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService$2.execute(DefaultFlexibleSearchService.java:374)
        at de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService$2.execute(DefaultFlexibleSearchService.java:1)
        at de.hybris.platform.servicelayer.session.impl.DefaultSessionService.executeInLocalView(DefaultSessionService.java:88)
        at de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService.getJaloResult(DefaultFlexibleSearchService.java:363)
        at de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService.search(DefaultFlexibleSearchService.java:164)
        at de.hybris.merchandise.core.notifystock.NotifyStockServices.isAlreadyExists(NotifyStockServices.java:118)
        at de.hybris.merchandise.facades.NotifyStock.impl.NotifyStockFacadeImpl.isAlreadyExists(NotifyStockFacadeImpl.java:51)
        at de.hybris.merchandise.storefront.controllers.misc.AddToCartController.verifyEmail(AddToCartController.java:132)

Working Query in HAC :

  select {p:PK} From {NotifyStock AS p} WHERE {p:status}=0 AND {p:productId}=0100 AND {p:emailId}='[email protected]'

Flexiblesearch Query(Not working):

    final StringBuilder builder = new StringBuilder();
        builder.append("SELECT {p:").append(ItemModel.PK).append("} ");
        builder.append("FROM {").append(NotifyStockModel._TYPECODE).append(" AS p} ");
        builder.append("WHERE ").append("{p:").append(NotifyStockModel.STATUS).append("}").append("=?isSent ");
        builder.append("AND ").append("{p:").append(NotifyStockModel.PRODUCTID).append("}").append("=?productCode ");
        builder.append("AND ").append("{p:").append(NotifyStockModel.EMAILID).append("}").append("=?emailId ");



        final String email = "\'" + notifyStockModel.getEmailId() + "\'";
        final FlexibleSearchQuery query = new FlexibleSearchQuery(builder.toString());
        query.setNeedTotal(true);
        query.addQueryParameter("isSent", Boolean.FALSE);
        query.addQueryParameter("productCode ", notifyStockModel.getProductId());
        query.addQueryParameter("emailId ", email);

When i Fire the above Query in HAC the query is working fine but when i fired the same query using flexible search i am getting some flexiblesarch exception.Can anyone tell me what is the Mistake in my flexible search query?Any help would be appreciated?

like image 289
User2413 Avatar asked Jun 15 '26 01:06

User2413


1 Answers

Adding to what Shresht has answered, always make it a habit to use the field name constants in the parameter map as well.

Example :

query.addQueryParameter(NotifyStockModel.PRODUCTID, notifyStockModel.getProductId()); query.addQueryParameter(NotifyStockModel.EMAILID, email);

The above syntax will never lead to issues. Also for such direct matching queries, I suggest you use flexible search's below method :

flexibleSearchService.getModelByExample(example)

This results in a more maintainable code. Check the wiki for more info.

like image 57
BalajiMohan Avatar answered Jun 18 '26 01:06

BalajiMohan



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!