Hibernate findByCriteria странное поведение - PullRequest
0 голосов
/ 18 июня 2009

У меня есть простой метод, который просто делает две строки и пытается вернуть все объекты в таблице базы данных оракула:

DetachedCriteria criteria = DetachedCriteria.forClass(Object.class);
return (Collection)getHibernateTemplate().findByCriteria(criteria);

Однако я получил ошибку "ORA-01031: недостаточно привилегий". Когда я проверил логи для show_sql, я нашел это:

Hibernate: select this_.NAME as NAME8_0_, from PL_VW this_ where ID=?
Hibernate: update PL_VW set NAME=? where ID=?
Hibernate: update PL_VW set NAME=? where ID=?
Hibernate: update PL_VW set NAME=? where ID=?
Hibernate: update PL_VW set NAME=? where ID=?
Hibernate: update PL_VW set NAME=? where ID=?
...

Почему findByCriteria выбирает идентификатор и выполняет несколько обновлений? Должен ли быть предоставлен доступ к обновлению для всех таблиц, которые подключены к Hibernate? Я не хочу, чтобы таблицы обновлялись!

Или что-то не так с кодом?

Заранее спасибо.

1 Ответ

0 голосов
/ 19 июня 2009

Да, он должен был вернуть все объекты.

Я обнаружил самую неочевидную проблему:

В методе getName я выполнил некоторые функции для подстрок и возвратил измененную строку.

Полагаю, hibernate сразу же попытался обновить базу данных с помощью того, что было возвращено в getName. (Что ?! Почему?!)

Было ли это упомянуто где-нибудь в документах Hibernate или это должен был быть здравый смысл ??? Какой я нуб.

Спасибо, ребята, за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...