Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java将HSQLDB表中的数据转换为二维数组_Java_Arrays_Hibernate_Hsqldb - Fatal编程技术网

使用Java将HSQLDB表中的数据转换为二维数组

使用Java将HSQLDB表中的数据转换为二维数组,java,arrays,hibernate,hsqldb,Java,Arrays,Hibernate,Hsqldb,我试图以列表的形式从LivEx表中获取数据,然后将该数据保存到名为array的二维数组中。我的方法是返回对象[] 我在谷歌上到处搜索,从每个例子中提取一些信息,编写了这段代码,但是我做了一些错误的事情,我似乎不能完全指出。每当我调用getLivExList(currentPlan)时,它都会给我一个异常,即NullPointerException 这是我的密码: public static Object[][] getLivExList(String currentPlan) throws Ex

我试图以列表的形式从LivEx表中获取数据,然后将该数据保存到名为array的二维数组中。我的方法是返回对象[]

我在谷歌上到处搜索,从每个例子中提取一些信息,编写了这段代码,但是我做了一些错误的事情,我似乎不能完全指出。每当我调用
getLivExList(currentPlan)
时,它都会给我一个异常,即
NullPointerException

这是我的密码:

public static Object[][] getLivExList(String currentPlan) throws Exception {
    Session s = null;

    try {
        s = HibernateUtil.getSessionFactory().getCurrentSession();
        s.beginTransaction();
        String query = "select F.item, F.category, F.amount from LivEx F where F.planName=?";
        Query q = s.createQuery(query);
        System.out.println(query);
        List fp = q.list();
        s.getTransaction().commit();
        Object array[][] = new Object[fp.size()][3];
        for (int i = 0; i < fp.size(); i++) {
            for (int j = 0; j < 3; j++) {
                array[i][j] = fp.get(j +(3 * i));
            }
        }
         System.out.println("getLivExdata in networthentitymanager OKAY");
        return array;
    } catch (Exception e) {
         System.out.println("problem at getLivExdata in networthentitymanager");
         throw e;
    } finally {
        if (s != null) {
            HibernateUtil.closeSession();
        }
    }
您正在获得列表的大小。若q.list()返回的列表为null,那个么并没有找到匹配的行,那个么您将得到null指针异常

这是我在代码中看到的第一件可能是错误的事情


在调用列表上的方法之前,您可以检查它是否为null。

您没有为查询设置计划名称,即使指定了位置参数(

将此信息放在呼叫
列表之前:

query.setString(0, currentPlan);

我们不是通灵者。。。请指出您发布的代码的哪一行是NPE,例如,在说下一行的NPE之前插入一行,请检查编辑,这是我得到的例外。坦白说:如果您通过“到处搜索并从每个示例中获取一些信息”来构建此功能那么这部分就是你做错的地方:你必须了解你正在使用的技术,而不是简单地将网络上的部分(可能有一半错误)示例串在一起。这肯定会导致灾难。Query.list()将返回一个列表。fp.get(j+(3*i))是错误的。它应该是((Object[])fp.get(i))[j]我同意约阿希姆的观点。Hibernate有一个写得非常好的参考文档,它是详尽的,并且充满了示例。读一下-1.Query.list()永远不会返回null,任何返回列表的方法也不会返回null。这并不是例外的原因。请阅读来自异常的消息。@JBNizet堆栈跟踪在我回答问题时不可用……无论如何,感谢您指出
List fp = q.list();         
s.getTransaction().commit();         
Object array[][] = new Object[fp.size()][3]; 
query.setString(0, currentPlan);