1

Javaで単純な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はすべて同じ結果をもたらします。なにが問題ですか?ありがとう!

4

1 に答える 1

3

XQJ ではXQResultSequence、コレクションとイテレータを組み合わせたようなものです。getItemType()コレクション内の「現在の位置」にあるアイテムに、次のようなメソッドが適用されます。現在の位置は、最初は「最初の項目の前」です。コレクション内の最初のアイテムのアイテム タイプを見つけるには、まずメソッドを呼び出してコレクションを最初のアイテムに配置する必要がありますnext()

于 2016-05-11T13:43:49.330 に答える