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();方法在两个查询中的工作方式不同
没有。它的工作方式并没有什么不同。
对于您的select
和update
查询session.createQuery(java.lang.String); 为给定的HQL 查询字符串返回Query
类型的实例,记住它不会触发任何查询,select
和update
。
语句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语句写了一个条件查询,但是不能正常执行,请帮忙看一下