[英]How can i write update query with condition in hibernate
public String passlink(String companyName, String mailName) {
Session session = Hibernateutil.getSessionFactory().openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
String queryString="UPDATE account SET companyname = :companyName WHERE companyname like 'm' AND Email LIKE :mailName";
Query query=session.createQuery(queryString);
query.setParameter("companyName", companyName);
query.setParameter("mailName", mailName);
int result = query.executeUpdate();
System.out.println("Rows affected: " + result);
System.out.println("Successfully updated");
transaction.commit();
} catch (Exception e) {
value = "FAIL";
e.printStackTrace();
//System.out.println("Error--> " + e.getMessage());
}
return value;
}
我寫更新查詢
String queryString =“UPDATE account SET companyname =:companyName WHERE companyname like'm'AND Email LIKE:mailName”;
像這樣,但它給出了以下錯誤。
java.lang.IndexOutOfBoundsException:Index:0,size:0 at java.util.ArrayList.RangeCheck(Unknown Source)at java.util.ArrayList.get(Unknown Source)at org.hibernate.hql.ast.HqlSqlWalker.postProcessUpdate(位於org.hibernate.hql的org.hibernate.hql.antlr.HqlSaseWalker.statement(HqlSqlBaseWalker.java:164)的org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:189)中的HqlSqlWalker.java:390) org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)中的.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:130)atg.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:425)at at Org.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:880)org.hibernate.impl.SessionImpl.executeUpdate(SessionImpl.java:861)org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:89) at com.njob.dao.AccountDao.passlink(AccountDao.java:213)at com.njob.action.companylink.doPost(companylink.java:34)at javax.servlet.http.HttpServlet.service(Htt) pServlet.java:709)位於org.apache.catalina.core的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)的javax.servlet.http.HttpServlet.service(HttpServlet.java:802) .applicationFilterChain.doFilter(ApplicationFilterChain.java:157)位於org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)at at Org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:107)org.apache.catalina.connevice.CoyoteAdapter.service(CoyoteAdapter.java:148)org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)org.apache.coyote .http11.Http11Protocol $ Http11ConnectionHandler.processConnection(Http11Protocol.java:731)at org.apache.tomcat.util.net.PoolT atg.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)中的cpEndpoint.processSocket(PoolTcpEndpoint.java:526)位於org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run(ThreadPool。 java:684)at java.lang.Thread.run(Unknown Source)
將查詢更改為
String queryString="UPDATE account SET companyname = :companyName WHERE companyname like 'm' AND email LIKE :mailName";
並使用
query.setParameter("companyName", companyName);
query.setParameter("mailName", mailName);
看到
嘗試這個
query.setParameter("companyName", companyName);
您使用的參數是companyName
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.