[
https://issues.apache.org/jira/browse/OLINGO-1309?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Archana Rai resolved OLINGO-1309.
---------------------------------
Resolution: Fixed
> Olingo 2.0.10 breaking change for ENUM $filter support
> ------------------------------------------------------
>
> Key: OLINGO-1309
> URL: https://issues.apache.org/jira/browse/OLINGO-1309
> Project: Olingo
> Issue Type: Bug
> Components: odata2-jpa
> Affects Versions: V2 2.0.10
> Reporter: Bruno Haller
> Priority: Critical
>
>
> We are using the olingo JPA processor and our entity has a field which is a
> java Enum.
> When we issue the following OData request
> /Issues/$count?$filter=Status eq 'NEW'
> (where Status is the ENUM field), we are getting an exception
>
> 2018-10-19 10:43:13.299 ERROR 3116 --- [o-auto-1-exec-4]
> c.s.c.p.o.ProjectODataJPAErrorCallback :
> org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException:
> "OData - JPA Runtime: JPA query syntax is not correct"
> java.lang.IllegalArgumentException: You have attempted to set a value of
> type class java.lang.String for parameter 1 with expected type of class
> com.sap.copin.project.model.enums.IssueStatus from query string SELECT COUNT
> ( E1 ) FROM Issue E1 WHERE (E1.status LIKE ?1 ESCAPE '\').
>
> With olingo 2.0.8 the generated SQL was:
> SELECT COUNT ( E1 ) FROM Issue E1 WHERE (E1.status = 'NEW')
>
> With olingo 2.0.10 the generated SQL is:
> SELECT COUNT ( E1 ) FROM Issue E1 WHERE (E1.status LIKE ?1 ESCAPE '\')
>
> Using the prepared statement is good, but this breaks ENUM support.
> Olingo should do a Enum.valueOf() call for Enum fields that are used in an
> "equals" $filter expression to make it work again.
>
> A similar feature is already implemented in JPAEntity.setProperty, but this
> does not help for filtering.
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)