Problems with eclipseLink JPA Query and 'LIKE'

44 views
Skip to first unread message

Alexander Kley

unread,
Mar 11, 2016, 11:14:54 AM3/11/16
to mongodb-user
Hi guys,

I'm using eclipseLink 2.6.2, mongoDb 2.4.9, mongoJavaDriver 2.11.3 and queryDsl 3.6.2
While executing some queries I have some troubble!


Caused by: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.2.v20151217-774c696): org.eclipse.persistence.eis.EISException
Exception Description: Query too complex for Mongo translation, function [
Function operator [,  LIKE ,  ESCAPE , ]
   Query Key an_gender
      Base com.cloudyle.paasplus.api.fhir.model.dstu2.resource.Patient{DatabaseTable(t0)=DatabaseTable(PATIENT)}] not supported in query: ReadAllQuery(referenceClass=Patient jpql="select patient
from Patient patient
where patient.an_gender like ?1 escape '!'")
at org.eclipse.persistence.nosql.adapters.mongo.MongoPlatform.appendExpressionToQueryRow(MongoPlatform.java:421)
at org.eclipse.persistence.nosql.adapters.mongo.MongoPlatform.buildCallFromStatement(MongoPlatform.java:308)
at org.eclipse.persistence.eis.EISDescriptor.buildCallFromStatement(EISDescriptor.java:540)
at org.eclipse.persistence.internal.queries.StatementQueryMechanism.setCallFromStatement(StatementQueryMechanism.java:390)[167:org.eclipse.persistence.core:2.6.2.v20151217-774c696]
at org.eclipse.persistence.internal.queries.StatementQueryMechanism.prepareSelectAllRows(StatementQueryMechanism.java:315)[167:org.eclipse.persistence.core:2.6.2.v20151217-774c696]
at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.prepareSelectAllRows(ExpressionQueryMechanism.java:1723)[167:org.eclipse.persistence.core:2.6.2.v20151217-774c696]
at org.eclipse.persistence.queries.ReadAllQuery.prepareSelectAllRows(ReadAllQuery.java:885)[167:org.eclipse.persistence.core:2.6.2.v20151217-774c696]
at org.eclipse.persistence.queries.ReadAllQuery.prepare(ReadAllQuery.java:816)[167:org.eclipse.persistence.core:2.6.2.v20151217-774c696]
at org.eclipse.persistence.queries.DatabaseQuery.checkPrepare(DatabaseQuery.java:666)[167:org.eclipse.persistence.core:2.6.2.v20151217-774c696]
at org.eclipse.persistence.queries.ObjectLevelReadQuery.checkPrepare(ObjectLevelReadQuery.java:911)[167:org.eclipse.persistence.core:2.6.2.v20151217-774c696]
at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:890)[167:org.eclipse.persistence.core:2.6.2.v20151217-774c696]
at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1134)[167:org.eclipse.persistence.core:2.6.2.v20151217-774c696]
at org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:460)[167:org.eclipse.persistence.core:2.6.2.v20151217-774c696]
at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:1222)[167:org.eclipse.persistence.core:2.6.2.v20151217-774c696]
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2896)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1857)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1839)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1804)
at org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:258)
... 44 more



The query is quite simple: 
Select p from Patient p where p.gender like 'B%'

Is it possible that 'LIKE' is not supported by eclipseLink? Because the same query works fine if I use "= 'B'" instead of "like 'B%'"

Any idea what I'm doing wrong?

Best regards,
Alex

Alexander Kley

unread,
Mar 11, 2016, 12:29:25 PM3/11/16
to mongodb-user
OK I have identified, that "escape '!'" makes the problems!

How can I handle to create the query without the ESCAPE function?

Best regards,
Alex
Reply all
Reply to author
Forward
0 new messages