正如Hibernate ORM 5.2.13.Final User Guide中提到的那样:
仅支持
INSERT INTO … SELECT …
表单。您无法指定要插入的显式值。
官方消息来源推断其背后的推理吗?是否存在任何干扰HQL中INSERT INTO ... VALUES ...
形式支持的限制?
答案 0 :(得分:2)
引入DML样式操作的主要原因是能够以牺牲一个(或者在某些情况下涉及实体层次结构的情况下)真实SQL语句为代价来处理数据库中的多个记录。这样我们就可以避免在内存中获取所有受影响的数据,以便在单个实体(行)上使用CRUD操作执行等效逻辑。
基本上,这允许我们在需要的情况下使用来自SQL世界的熟悉的UPDATE
和DELETE
语句,同时仍然利用HQL / JPQL的所有好处。
insert ... select
也可以达到这个目的,而insert ... values
与简单地持久化实体实例相比没有任何好处。