HQL INSERT 不能用于直接插入任意实体——它只能用于插入从 SELECT 查询获得的信息构造的实体(与普通 SQL 不同,在普通 SQL 中,INSERT 命令可用于将任意数据插入表中,以及从其他表中选择的插入值)。
INSERT 语句的语法如下:
INSERT INTO path ( property [, ...]) select
实体的名称是路径。属性名称是在合并的 SELECT 查询的 FROM 路径中列出的实体的属性名称。选择查询是 HQL SELECT 查询(如下一节所述)。
由于此 HQL 语句只能使用 HQL select 提供的数据,因此它的应用可能会受到限制。在实际清除用户之前将用户复制到已清除表的示例可能如下所示:
Query query=session.createQuery("insert into purged_accounts(id, code, status) "+
"select id, code, status from acount where status=:status");
query.setString("status", "purged");
int rowsCopied=query.executeUpdate();
或者你可以使用
session.persist(obj);
其中 obj 是 POJO 类的对象,比如说 TestClass
TestClass obj=new TestClass('','',''); //paramatrized constructor for the values you want to insert in your database.