我試圖按照文件 http://docs.jboss.org/hibernate/orm/3.3 ... TCH-直接試圖做Hibernate更新 - 有人可以指出我在正確的方向嗎?
但在這個例子中得到以下錯誤在我的服務器日誌:
重度:org.hibernate.QueryException:查詢必須以SELECT或FROM開頭:update [update hibernate.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其中iUserId =:id]
這表明我需要與SELECT
或FROM
開始查詢,但該示例使用更新查詢Update
,所以我不明白是什麼問題。
任何人都可以告訴我一個如何做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;
}