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

时间:2011-10-24 05:06:11

标签: java arrays hibernate hsqldb

我试图从LivEx表中获取数据作为列表,然后将该数据保存到称为数组的二维数组中。我的方法是返回object [] []。

我在这里和那里用谷歌搜索这个代码并从每个例子中取出一些东西,但是我做错了什么我似乎无法用手指。每当我拨打NullPointerException时,它都会给我一个例外getLivExList(currentPlan)

这是我的代码:

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();
        }
    }

请帮我找出问题的来源。

这是我得到的例外:

    SEVERE: null
    org.hibernate.QueryException: Expected positional parameter count: 1, actual parameters: [] [select F.item, F.category, F.amount from LivEx F where F.planName=?]
    0 problem 
    at org.hibernate.impl.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:319)
    at org.hibernate.impl.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:275)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:75)
    at com.elitconsultancy.finplanner.entity.NetWorthEntityManager.getLivExList(NetWorthEntityManager.java:213)

2 个答案:

答案 0 :(得分:2)

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

在致电list

之前说出这一点
query.setString(0, currentPlan);

答案 1 :(得分:0)

List fp = q.list();         
s.getTransaction().commit();         
Object array[][] = new Object[fp.size()][3]; 

你的名单大小。如果q.list()返回的列表为null,那么找不到匹配的行,那么你将获得Null指针异常。

这是我看到的第一件可能是错误的代码

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