| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > HQL INSERT |
| Автор: 17dufa 19.4.2011, 15:19 |
| Добрый день, можно ли как-то извернуться и таки обойти запрет на обычный INSERT INTO VALUES в HQL? то есть требуется при помощи HQL запроса вставить 1 запись. |
| Автор: LSD 19.4.2011, 15:59 |
| Буква Q в абревиатуре HQL означает query, т.е. запросы и HQL вообще не включает никакой DML. Есть Native SQL, есть возможность получить JDBC Connection, надо смотреть по задаче. |
| Автор: 17dufa 19.4.2011, 16:30 |
| LSD, ну тем не менее с DELETE, UPDATE и INSERT INTO SELECT прокатывает. |
| Автор: MisterCleric 19.4.2011, 16:37 |
| Привет. Чушь какая-то... INSERT INTO VALUES - это стандартная операция из перечня CRUD, которые реализовывает любой JPA-vendor. В твоем случае это hibernate. Надо смотреть в логи, чего именно оно у тебя ругается. |
| Автор: 17dufa 19.4.2011, 16:48 |
| MisterCleric, я когда синтаксис искал, нашел сообщения, что только INSERT INTO SELECT. Попробовал INSERT INTO VALUES получил ошибку: unexpected token: VALUES near line 1, column 26 [INSERT INTO Tariff(name) VALUES (:name)]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: unexpected token: VALUES near line 1, column 26 [INSERT INTO Tariff(name) VALUES (:name)] сам запрос: INSERT INTO Tariff(name) VALUES (:name) в классе Tariff всего одно поле - name. |
| Автор: MisterCleric 19.4.2011, 17:09 |
| Да, ты абсолютно прав: так они и пишут: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/batch.html Тогда пробуй через NamedQuery или вызывай метод save у Session на Entity |
| Автор: LSD 20.4.2011, 09:52 |
Да действительно, теперь он и такие штуки поддерживает. Мне только непонятно в чем смысл вставки одно объекта через HQL. Почему не через entity или native SQL? |
| Автор: 17dufa 20.4.2011, 11:01 |
| LSD, хотелось HQL запросы вынести в отдельный файл, чтобы при установке у разных заказчиков была возможность немного допилить программу. спускаться до native SQL - вылезут диалекты. буду решать именно на уровне entity и выноса в отдельный файл куска кода, благо язык скриптовый (GROOVY). |