Подтвердить что ты не робот

Вставка данных в одну таблицу с использованием HQL в Hibernate

Я читал учебник Hibernate HQL и обнаружил, что HQL не поддерживает INSERT INTO..VALUES.., но INSERT INTO..SELECT.. i.e. HQL поддерживает только вставку из другой таблицы.

Предположим, что я хочу вставить одинаковые значения в одну таблицу и что данные не из какой-либо другой таблицы, то есть значения не находятся в какой-либо другой таблице. Тогда как я могу это сделать в HQL?

Кроме того, хотелось бы знать рациональность таких ограничений в HQL?

4b9b3361

Ответ 1

Вам не нужно использовать hql для вставки, если данные из другой таблицы.

Просто получите ссылку на свою сущность, получите сеанс Hibernate и вызовите save().

Согласно http://docs.jboss.org/hibernate/orm/4.0/devguide/en-US/html/ch04.html#d0e2116

Псевдо-синтаксис для операторов INSERT

INSERT INTO EntityName properties_list select_statement

Поддерживается только форма INSERT INTO... SELECT.... Вы не можете указать явные значения для вставки.

Ответ 2

Hibernate - это структура ORM (объектно-реляционное сопоставление).

Его задача состоит в том, что вы передаете объекты (объекты), и он управляет хранилищем (через Session.save(), IIRC).

Итак, вы не используете HQL для вставки новых записей, но используете методы ORM.

И (это предположение), с другой стороны, поскольку загрузка сущностей из таблицы, копирование их на другие объекты и сохранение их по одному происходит медленно, HQL обеспечивает ярлык SQL в базе данных только для этого конкретного для повышения производительности.

Ответ 3

Вы можете использовать session.save(object) для вставки данных в таблицы.