I was reading the Hibernate HQL tutorial and found that HQL doesn't support INSERT INTO..VALUES..
but INSERT INTO..SELECT..
i.e. HQL only support insert from another table.
Suppose I want to insert same values in one table and that data is not from any other table i.e. the values are not in any other table.Then how can I do that in HQL?
Also, would like to know the rational behind such restrictions in HQL?
Hibernate is an ORM framework (Object-Relational Mapping).
Its job is that you give objects (Entities) to it and he manages the storage (through
Session.save()
, IIRC).So, you do not use the HQL to insert new records, but use the ORM methods.
And (this is a guess) on the other hand, since loading entities from a table, copying them to other entities and storing them one by one is slow, HQL provides a shortcut to the SQL in the DB just for that specific operation for performance purposes.
You don't need to use hql to insert if the data is from another table.
Simply get a reference to your entity, get a hold of a Hibernate session, and call save().
According to http://docs.jboss.org/hibernate/orm/4.0/devguide/en-US/html/ch04.html#d0e2116
Pseudo-syntax for INSERT statements
Only the INSERT INTO ... SELECT ... form is supported. You cannot specify explicit values to insert.
You can use
session.save(object)
to insert data into tables.