用于获取表列计数的hibernate查询

时间:2017-02-03 13:06:53

标签: mysql hibernate

我是学习HIBERNATE和SQL的新手。我想要一个查询来计算表中可用的列数。请帮我完成这个任务。

我尝试了以下查询,但是我收到批量操作异常。

谢谢。

Query colQuery  =   session.createSQLQuery("SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema =:'dn' AND table_name=:'tn'");
    colQuery.setString("dn", "abc");
    colQuery.setString("tn", "store_data");
  int count=colQuery.executeUpdate();

1 个答案:

答案 0 :(得分:0)

我发现您的代码存在一些问题。首先,原生查询中的命名参数不会使用单引号,即使用:dn :'dn'。接下来,您尝试对SELECT查询执行更新。这也是错误的,因为您没有更新任何记录,只需要调用colQuery.list()即可获取结果集。最后,我认为您需要使用Query#setParameter()为参数指定值。尝试使用此代码:

Query colQuery = session.createSQLQuery("SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema=:dn AND table_name=:tn");
colQuery.setParameter("dn", "abc");
colQuery.setParameter("tn", "store_data");
List<Object[]> rows = colQuery.list();
int rowCount = ((Integer) rows.get(0)[0]).intValue();

请注意,我访问了结果集的第一行,以及第一行中的第一行(也是唯一一列)来获取计数。