HQL查询无法正常工作?

时间:2014-01-14 07:06:08

标签: hibernate hql

我有这段代码

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();方法如何在两个查询中以不同的方式工作。请逐行解释上述程序的执行情况。

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

  

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

否。它的工作方式不同。

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

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