ssh2整合 SQL Error: 1064, SQLState: 42000错误

时间:2020-12-19 15:51:47
删除的方法
public boolean deleteMusic(final String hql,final int id) {
try {
this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session){
SQLQuery sq=session.createSQLQuery(hql);
sq.setInteger(0,id);
return sq.executeUpdate();
}
});
bool = true;
} catch (Exception e) {
bool = false;
System.out.println("MusicDaoImpl......deleteMusic(String hql, int id)"+e);
}
return bool;
}


报的错误
Hibernate: delete from TMusic t where t.id = ?
2010-01-13 14:49:02,125 WARN [org.hibernate.util.JDBCExceptionReporter] - SQL Error: 1064, SQLState: 42000
2010-01-13 14:49:02,125 ERROR [org.hibernate.util.JDBCExceptionReporter] - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 't where t.id = 11' at line 1
MusicDaoImpl......deleteMusic(String hql, int id)org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute native bulk manipulation query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute native bulk manipulation query

用的是mysql数据库

11 个解决方案

#1


从报错来看好像是语法错误哦

#2


如果你HQL没有写错的话。
MySQL version 貌似有问题!

#3


在“'t where t.id = 11'”有hql语法错误

#4


SQLQuery sq=session.createSQLQuery(hql); 
你执行的是delete操作怎么创建一个查询语句类

#5


直接在hql语句中传入参数试试

#6


这是我的sql语句
this.hql = "delete from TMusic t where t.id = ?";
this.bool = this.musicDao.deleteMusic(this.hql,id);

#7


知道什么原因了谢谢各位啊!
SQLQuery sq=session.createSQLQuery(hql); 
看错了要改成
Query sq=session.createQuery(hql);
就没有错误了!
如果不改的话就
写成sql语句也不会有问题

#8


一开始我也以为是mySql的版本问题

#9


session.createSQLQuery(hql); 是直接对数据库的操作(原生态的sql语句),并没有对对象操作
所以你的并不是hql,而是sql;
this.hql = "delete from table where id = ?"; 注意问号不要写出中文的了。
如果用对象导航的hql就可以这样:
hql = "delete from Table t where t.id = ?";
session.createQuery(hql);

#10


刚发完,lz就看出来了。晕……

#11


学习一下...

#1


从报错来看好像是语法错误哦

#2


如果你HQL没有写错的话。
MySQL version 貌似有问题!

#3


在“'t where t.id = 11'”有hql语法错误

#4


SQLQuery sq=session.createSQLQuery(hql); 
你执行的是delete操作怎么创建一个查询语句类

#5


直接在hql语句中传入参数试试

#6


这是我的sql语句
this.hql = "delete from TMusic t where t.id = ?";
this.bool = this.musicDao.deleteMusic(this.hql,id);

#7


知道什么原因了谢谢各位啊!
SQLQuery sq=session.createSQLQuery(hql); 
看错了要改成
Query sq=session.createQuery(hql);
就没有错误了!
如果不改的话就
写成sql语句也不会有问题

#8


一开始我也以为是mySql的版本问题

#9


session.createSQLQuery(hql); 是直接对数据库的操作(原生态的sql语句),并没有对对象操作
所以你的并不是hql,而是sql;
this.hql = "delete from table where id = ?"; 注意问号不要写出中文的了。
如果用对象导航的hql就可以这样:
hql = "delete from Table t where t.id = ?";
session.createQuery(hql);

#10


刚发完,lz就看出来了。晕……

#11


学习一下...