HQL 查询无法正常工作?

Posted

技术标签:

【中文标题】HQL 查询无法正常工作?【英文标题】:HQL queries is not working properly? 【发布时间】:2014-01-14 07:06:07 【问题描述】:

我有这个代码

System.out.println("Executing Select Query");

    Query query = session.createQuery("from Student where name=:name");

    query.setParameter("name", "Raj");

    List list = query.list();

    Iterator it = list.iterator();

    while (it.hasNext()) 

        Student stud = (Student) it.next();

        System.out.println(stud.getName());

        System.out.println(stud.getStandard());

    

    System.out.println("Executing Update");

    Transaction tx1 = session.beginTransaction();

    Query queryupdate = session

            .createQuery("update Student set standard = :standard where name = :name");

    queryupdate.setParameter("name", "Raj");

    queryupdate.setParameter("standard", "Third Standard");

    int result = queryupdate.executeUpdate();

    tx1.commit();

    System.out.println("Student record updated " + result);

select query (Query query = session.createQuery("from Student where name=:name"));

上面一行是从数据库中选择值。

update query Query queryupdate = session .createQuery("update Student set standard = :standard where name = :name"); 下没有在数据库中执行更新,但queryupdate.executeUpdate(); 正在更新数据库。

所以我的问题是session.createQuery(); 方法如何在两个查询中以不同的方式工作。请逐行解释上述程序的执行。

【问题讨论】:

【参考方案1】:

所以我的问题是 session.createQuery();方法在两个查询中的工作方式不同

没有。它的工作方式并没有什么不同。

    对于您的selectupdate 查询session.createQuery(java.lang.String); 为给定的HQL 查询字符串返回Query 类型的实例,记住它不会触发任何查询,selectupdate

    语句query.list() 和queryupdate.executeUpdate() 执行查询并分别以list 和int 形式返回结果。

【讨论】:

感谢 Aniket Kulkarni 的回答我实际上想为你的回答投票给你黄金,但我无法投票。当我点击黄金时,没有任何事情发生顺便说一句,再次感谢。 我得到了 queryupdate.executeUpdate() 执行更新,但我找不到任何说明 query.list 执行查询的文档。请告诉我任何相关参考,我会非常高兴接受你的回答。请帮助我 @TruePS : query.list 如果您滚动到页面顶部,您可以看到Queries are executed by calling list(), scroll() or iterate().【参考方案2】:

我不确定我理解你的问题是否正确。

.list();这实际上是在执行选择查询。

正在执行更新查询的是.executeUpdate()

【讨论】:

谢谢 K.C.对于您的回答,我实际上想为您的回答投票给您黄金,但我无法投票。当我单击黄金时,没有任何事情发生顺便说一句,再次感谢。

以上是关于HQL 查询无法正常工作?的主要内容,如果未能解决你的问题,请参考以下文章

我用hibernate中的hql语句写了一个条件查询,但是不能正常执行,请帮忙看一下

休眠 HQL 连接错误

Laravel 查询具有 'where' 和 'orwhere' 无法正常工作

SQLite 插入查询无法正常工作

Sql 查询无法正常工作

Bigquery 重复数据删除查询无法正常工作