2017-02-03 2 views
0

Я новичок в обучении HIBERNATE и SQL.I хочу получить запрос для подсчета количества столбцов, доступных в таблице. Пожалуйста, помогите мне выполнить эту задачу.hibernate запрос для получения столбца таблицы count

Я попробовал нижеследующий запрос, но я получаю исключение массовой манипуляции.

спасибо.

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

ответ

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

Обратите внимание, что я доступ к первой строки результирующего набора, а первый (и единственный) столбец в этой первой строке, чтобы получить счетчик.

Смежные вопросы