尝试进行Hibernate更新-有人能给我指出正确的方向吗?

尝试进行Hibernate更新-有人能给我指出正确的方向吗?,hibernate,Hibernate,我试图按照文档中的示例进行操作 ... tch直接 但在我的服务器日志中获取以下错误: 严重:org.hibernate.QueryException:查询必须以SELECT或FROM:更新开头[更新hibernate.TbUser u set u.vcUserName=:userName,u.vcUserPsw=:userPsw,u.vcUserFirstName=:firstName,u.vcUserMiddleName=:middleName,u.vcEmailAddress=:email

我试图按照文档中的示例进行操作 ... tch直接

但在我的服务器日志中获取以下错误:

严重:org.hibernate.QueryException:查询必须以SELECT或FROM:更新开头[更新hibernate.TbUser u set u.vcUserName=:userName,u.vcUserPsw=:userPsw,u.vcUserFirstName=:firstName,u.vcUserMiddleName=:middleName,u.vcEmailAddress=:email,u.vPhoneNumber=:phone,u.dtTerminateDate=:termDate,u.dtHireDate=:hireDate,u.dtUpdTime=:updTime,u.iUpdUserId=:userId,其中iUserId=:id]

这表明我需要使用SELECT或FROM开始查询,但是示例在更新查询中使用Update,因此我不理解问题是什么

谁能给我举一个如何更新的例子吗??? 文件显然没有。 谢谢

以下是我试图执行的代码:

public int updateUser( String userName, String passwd, String firstName, String middleName, 
        String lastName, String email, String phone, Date termDate, Date hireDate, int id )
{
    int status = 0;
    try {
        org.hibernate.Transaction tx = session.beginTransaction();
        String cmd = "update TbUser u set u.vcUserName = :userName, "+
                "u.vcUserPsw = :userPsw, u.vcUserFirstName = :firstName, "+
                "u.vcUserLastName = :lastName, u.vcUserMiddleName = :middleName, "+
                "u.vcEmailAddress = :email, u.vcPhoneNumber = :phone, "+
                "u.dtTerminatedDate = :termDate, u.dtHireDate = :hireDate, "+
                "u.dtUpdTime = :updTime, u.iUpdUserId = :userId where iUserId = :id";
        Query q = session.createQuery( cmd );
        q.setString("userName", userName);
        q.setString("userPsw", passwd);
        q.setString("firstName", firstName);
        q.setString("middleName", middleName);
        q.setString("lastName", lastName);
        q.setString("email", email);
        q.setString("phone", phone);
        q.setDate("termDate", termDate);
        q.setDate("hireDate", hireDate);
        q.setDate("updTime", new Date());
        q.setInteger("id", id);
        status = q.executeUpdate();
        tx.commit();
    }
    catch( Exception e ) {
        e.printStackTrace();
        status = -1;
    }
    return status;
}
查看此页面,看起来您需要在类路径中包含antlr*.jar,并使用不同的解析器org.hibernate.hql.ast.ASTQueryTranslatorFactory

试着使用那个图书馆,看看你的进展如何