作业帮 > 综合 > 作业

org.hibernate.hql.ast.QuerySyntaxException:unexpected token错

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/16 13:45:15
org.hibernate.hql.ast.QuerySyntaxException:unexpected token错误
public Aadmin quaryUserNames(String name) {
String sql = "select * from Eadmin a where a.Aname = ";
Query query = sessionFactory.getCurrentSession().createQuery(sql);
query.setString(0,name);
Aadmin a = (Aadmin)query.uniqueResult();
return a;
}
提示错误:org.hibernate.hql.ast.QuerySyntaxException:unexpected token:* near line 1,column 8 [select * from Eadmin a where a.Aname = ]
但上面的sql语句直接拿到数据库(oracle)中是对的,问怎么改
String sql = "select * from Eadmin a where a.Aname = ";
Query query = sessionFactory.getCurrentSession().createQuery(sql);
query.setString(0,name);
sql = "select * from Eadmin a where a.Aname = "; 你这句话是标准的sql语句,但是你在这里sessionFactory.getCurrentSession().createQuery(sql);开启的是hibernate的面向对象的语句所以不可以,你改成sessionFactory.getCurrentSession().createSQL(sql);就可以了
再问: 我用的是SSh框架,这里我用sessionFactory.getCurrentSession().createQuery(sql)好呢,还是用 sessionFactory.getCurrentSession().createSQLQuery(sql) 好,我感觉sql语句要简单些,这里会不会用面向对象的语句更好
再答: 刚开始学的时候确实感觉使用原生态的sql好用一些,但是 移植性不好。