我试图从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)
答案 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。