org.hibernate.hql.internal.ast.QuerySyntaxException:期望为OPEN,在第1行第23列附近“从”找到[从OTP插入BackupOTP]

时间:2018-11-23 10:00:38

标签: java mysql hibernate spring-boot hql

我在Spring Boot 1.5中有一个带有mysql数据库的项目。我有2个实体类BackupOTPOTP,并且我想使用HQL将数据从OTP表复制到BackupOTP表。为此,我编写了这段代码。

Query query=session.createQuery("insert into BackupOTP from OTP where isExpired=:boolean");
query.setBoolean("boolean", true);
int i=query.executeUpdate();
System.err.println("i = "+i);

但是我遇到了这个异常

org.hibernate.hql.internal.ast.QuerySyntaxException: 
expecting OPEN, found 'from' near line 1, column 23 
[insert into BackupOTP from com.groupbima.central.entity.OTP where isExpired=:boolean]
  

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

最后,我得到了答案。

  

实际上,这是HQL语法的问题。我的HQL语法错误。我调查了Hibernate insert query documentation,并像这样修改了我的插入语法

Query query=session.createQuery("insert into BackupOTP (otpId, createdTime, encryptedOTP, isExpired, updatedTime)"
+ " select otpId, createdTime, encryptedOTP, isExpired, updatedTime from OTP where isExpired=:boolean");

query.setBoolean("boolean", true);
int i=query.executeUpdate();
System.err.println("i = "+i);
  

现在可以正常工作了。