初学者使用hibernate注意的小问题

废话不多说,直接来干货

     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语句在数据库上运行一下,是否包含某些关键字

本人也是初学者,只是遇到问题想要总结一下,有什么问题还请多多赐教!

扫描二维码关注公众号,回复: 5551953 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_37992974/article/details/84307102