`

Hibernate中使用SQL语句的误用

阅读更多
当发生如下异常时:

org.hibernate.QueryException: addEntity() or addScalar() must be called on a sql query before executing the query. [sql]

第一方案:

应该检查是不是
Query query=session.createSQLQuery(hql);的错误
如果确定要使用的是hql时,在hibernate中应改为:
Query query=session.createQuery(hql);


第二方案:

createSQLQuery一定要用addEntity方法

例如:实体类名为Student

  
   String sql = "select * from student as stu";

即 Query query = session.createSQLQuery(sql).addEntity("stu",Student.class);
// 告知Hibernate的list中的返回值设置成Student类型数据。

后面的使用都是一样的了。
分享到:
评论

相关推荐

    HQL语句大全

    更新数据可以通过`update`方法完成,但需要注意的是,HQL中的`update`操作并不像SQL那样直接使用`update`关键字,而是通过加载对象后修改其属性,再调用`update`或`saveOrUpdate`方法来实现: ```java public void ...

    hibernate优化前的程序

    过度的数据库查询**:不恰当的查询设计可能导致大量的SQL语句执行,如频繁的单个属性查询。优化方法包括使用HQL(Hibernate Query Language)或Criteria API来组合查询,减少数据库交互次数。 **2. 大量的对象初始...

    Mybatis与Hibernate的区别

    Hibernate的亮点在于它的映射机制,它可以自动生成SQL语句并处理结果映射,从而让开发者更专注于业务逻辑。此外,Hibernate还支持二级缓存,能够提高数据读取效率。然而,这种自动化带来的代价是其复杂性和庞大的...

    jstl-api-1.2.jar

    虽然在现代开发中,通常推荐使用更高级的框架如Hibernate或JPA,但在一些简单场景下,JSTL SQL标签库依然实用。例如`<sql:update>`, `<sql:query>`, `<sql:transaction>`等。 **JSTL 1.2版本的改进与特点** 1. **...

    J2EE开发规范

    规范鼓励使用适当的控制结构来代替复杂的条件语句,使用增强型for循环(foreach)来简化数组和集合的迭代,以及在适当的情况下使用try-catch块来处理异常。 #### 目录结构 项目目录结构的设计对于管理和维护大型...

Global site tag (gtag.js) - Google Analytics