Inserting data in one table using HQL in Hibernate

2020-01-29 08:39发布

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?

3条回答
Anthone
2楼-- · 2020-01-29 09:11

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.

查看更多
迷人小祖宗
3楼-- · 2020-01-29 09:19

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

INSERT INTO EntityName properties_list select_statement

Only the INSERT INTO ... SELECT ... form is supported. You cannot specify explicit values to insert.

查看更多
Explosion°爆炸
4楼-- · 2020-01-29 09:20

You can use session.save(object) to insert data into tables.

查看更多
登录 后发表回答