废话不多说,直接来干货
1.org.hibernate.hql.ast.QuerySyntaxException: user is not mapped [from user where username = :username and pwd = :password]
at org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:180)
at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:111)
。。。。。。
at dao.UserDao.login(UserDao.java:58)
at action.UserAction.login(UserAction.java:31)
值是部分的截图,他说在我的dao层出现的错误,源代码
session = CreateSession.getSession();
User user2 = null;
String hql ="from user where username = :username and pwd = :password";
try {
transaction = session.beginTransaction();
Query query = session.createQuery(hql);
query.setParameter("username", user.getUserName());
query.setParameter("password", user.getPassword());
user2 = (User) query.uniqueResult();
transaction.commit();
} catch (Exception e) {
// TODO: handle exception
if(transaction!=null)
transaction.rollback();
e.printStackTrace();
}finally {
session.close();
}
提交hql语句出现错误,再根据错误分析应该是user的问题,其实在hql语句里面,类数据库里映射着表,这也是hibernate的特性,只要我们把user改为实体类名就行,不是数据库表名,主要是习惯实体类会大写字母,而数据库表不大写,是一个很重要的点。
总结:hql语句和sql语句不通,hql里面的class对应数据库的table
2.数据库关键字的问题
有的时候我们创建了数据库,逻辑正确,但是却或有SQLException出现,某些属性没有默认值,这时候你可以把你的语句变成sql语句在数据库上运行一下,是否包含某些关键字
本人也是初学者,只是遇到问题想要总结一下,有什么问题还请多多赐教!