2016-01-22 46 views
3

這是我的問題:當我嘗試在包含單引號或雙引號的CMIS查詢中傳遞查詢字符串時,它不會執行並給出如下錯誤:錯誤調用CMIS查詢如果字符串包含單引號或雙引號

06:19:23,306 ERROR [DispatcherPortlet:561] Could not complete request 
org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException: Internal Server Error 
at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode(AbstractAtomPubService.java:506) 
at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.post(AbstractAtomPubService.java:661) 
at org.apache.chemistry.opencmis.client.bindings.spi.atompub.DiscoveryServiceImpl.query(DiscoveryServiceImpl.java:179) 
at org.apache.chemistry.opencmis.client.runtime.SessionImpl$6.fetchPage(SessionImpl.java:935) 
at org.apache.chemistry.opencmis.client.runtime.util.AbstractIterator.getCurrentPage(AbstractIterator.java:132) 
at org.apache.chemistry.opencmis.client.runtime.util.AbstractIterator.getPageNumItems(AbstractIterator.java:57) 
at org.apache.chemistry.opencmis.client.runtime.util.AbstractIterable.getPageNumItems(AbstractIterable.java:86) 
at com.zeetv.util.UtilMethods.getQueryResults(UtilMethods.java:349) 
at com.zeetv.action.twitter.TwitterController.checkTitle(TwitterController.java:121) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:175) 
at org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:369) 
at org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter.doHandle(AnnotationMethodHandlerAdapter.java:356) 
at org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter.handleResource(AnnotationMethodHandlerAdapter.java:302) 
at org.springframework.web.portlet.DispatcherPortlet.doResourceService(DispatcherPortlet.java:859) 
at org.springframework.web.portlet.FrameworkPortlet.processRequest(FrameworkPortlet.java:527) 
at org.springframework.web.portlet.FrameworkPortlet.serveResource(FrameworkPortlet.java:479) 

這裏是我的查詢字符串:

select * from my:content where cmis:name Like 'test's new content1' 

我也試過這樣:

select * from my:content where cmis:name Like '"test's new content1"' 

提前致謝。

+3

您可能想要使用OpenCMIS QueryStatement類(https://chemistry.apache.org/java/0.13.0/maven/apidocs/org/apache/chemistry/opencmis/client/api/QueryStatement.html) 。它爲你逃脫了一切。 –

+0

當你用「Liferay」標記這個:這是與Liferay的CMIS商店相關嗎?還是你對Alfresco執行的查詢恰好在Liferay應用程序中? –

+0

@OlafKock是的,我從liferay打電話給露天。 – User14141111

回答

3

請考慮審查this

字符串文字單引號括起來。轉義不遵循SQL-92轉義。字符串文字中的兩個單引號不代表引號字符:''''不是單引號字面量。

CMIS使用上下文確定的可用轉義字符定義基於反斜槓的轉義。

'bob\'s' is used in place of 'bob''s'

SELECT * from cmis:document WHERE cmis:name = 'bob\'s'

基本轉義:

  • \\ represents \
  • \' represents '

...

相關問題