2016-05-11 64 views
0

我想在java中執行簡單的xquery。但我得到異常獲取xquery結果時出現異常

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.xml.xquery.XQException: 
    XQJFOS017 - Can not call getItemType() when Forward Only Sequences is not positioned on an item. 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:624) 
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

我的依賴條件

<groupId>org.basex</groupId> 
<artifactId>basex</artifactId> 
<version>7.3.1</version> 

<groupId>net.xqj</groupId> 
<artifactId>basex-xqj</artifactId> 
<version>1.4.0</version> 

我的豆

@Bean(name = "baseXDataSource") 
public XQDataSource xqDataSource() throws XQException { 
    XQDataSource ds = new BaseXXQDataSource(); 
    ds.setProperty("serverName", "localhost"); 
    ds.setProperty("port", "1984"); 
    ds.setProperty("user", "admin"); 
    ds.setProperty("password", "admin"); 
    ds.setProperty("databaseName", "2016"); 
    return ds; 
} 

我的代碼

XQConnection conn = baseXDataSource.getConnection("admin", "admin"); 
     XQPreparedExpression expr = conn.prepareExpression("123"); 
     XQResultSequence result = expr.executeQuery(); 
     return result.getItemType().toString(); 

任何XQuery的,那我tryed執行,給出相同的結果。 有什麼不對?謝謝!

回答

2

在XQJ中,XQResultSequence就像是一個集合和一個迭代器的組合。像getItemType()這樣的方法適用於集合中「當前位置」的項目。當前位置最初是「在第一個項目之前」。要查找集合中第一個項目的項目類型,首先需要調用next()方法將集合放置在第一個項目上。

相關問題