Bruno Haller created OLINGO-1309: ------------------------------------ Summary: 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
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)