2016-05-11 51 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()方法将集合放置在第一个项目上。

相关问题