我有这段代码
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();
方法如何在两个查询中以不同的方式工作。请逐行解释上述程序的执行情况。
答案 0 :(得分:0)
我不确定我理解你的问题是否正确。
是.list()
;这实际上是在执行选择查询。
执行更新查询的是.executeUpdate()
。
答案 1 :(得分:0)
所以我的问题是session.createQuery();方法在两个查询中的工作方式不同
否。它的工作方式不同。
对于您的select
和update
查询session.createQuery(java.lang.String);,返回给定HQL查询字符串的Query
类型实例,请记住它不是同时触发任何查询select
或update
。
语句query.list()和queryupdate.executeUpdate()执行查询并分别以list和int的形式返回结果。