使用JSON值的存储过程未遍历Java中的对象数组值

时间:2018-09-10 20:32:15

标签: java arrays json stored-procedures

对于Java和JSON来说,我是一个新手,但在使这种情况下无法正常工作时遇到了问题。我们开始:

我必须发送一个将触发2个存储过程的JSON文件。第一个SP将写入标头表,而另一个SP使用第一个SP返回的游标值多次写入明细表。

我正在按以下方式定义JSON文件,该文件可以具有任意数量的详细对象数组(出于实际目的,我仅使用2进行测试)。

我的标头SP正确写入并返回我需要写入到明细表中的游标值。问题出在我的详细信息SP上,它只写第一个数组的值,而忽略第二个数组。换句话说,代码不会遍历所有已定义的数组值。

此外,我的StackTrace也给了我两个:

  • 调试org.springframework.web.servlet.DispatcherServlet-成功完成请求

  • java.sql.SQLException:游标状态无效

如何正确编写FOR子句,以使它遍历所有详细对象数组值?

谢谢您的时间!


POJO定义:

HeaderPOJO:

私人String公司;

私有字符串名称;

私人列表详细信息;

DetailPOJO:

私人String公司;

私有字符串组;

private int id;


JSON已发送: {

"company":"1",
"name":"somedude",
"detail":[
      {
        "company":"1",
        "group":"AB",
        "id":1
      },
      {
        "company":"1",
        "group":"AC",
        "id":2          
      }

     ]

}


JAVA代码片段:

public int dostuff(@RequestBody dostuff savestuffH) {

ResultSet rs = null;
Connection con = null;

int cursorreturned = 0;

try
{
    java.sql.DriverManager.registerDriver (new com.ibm.as400.access.AS400JDBCDriver ());
    con = DriverManager.getConnection("WORKING CONNECTION");            
            Statement st = con.createStatement();
    rs = st.executeQuery("call stored.procedure1(HEADER PARAMETERS)");

    while(rs.next())
            {
                cursorreturned = rs.getInt("SP Cursor"); //THIS IS A VALUE RETURNED BY MY SP WHICH I NEED FOR MY DETAILS TABLE
            }

    for(DetailPOJO savestuffD:savestuffH.getDetail())
            {
                rs = st.executeQuery("call stored.procedure2('" + savestuffD.getCompany() + "', " + cursorreturned + ", '" + savestuffD.getGroup() + "', " + savestuffD.getid() + ")");
            }
}

}

0 个答案:

没有答案