2017-11-20 10 views
0

私は、Hibernateを使用してMySQLテーブルのデータを更新するプロジェクトの下で働いています。プロジェクトを実行するたびに例外が以下のように表示されます。Hibernateを使用してテーブルを更新します。

[バッチ更新は、更新[0]から予期しない行数を返しました。実際の 行数:0;予想:1]

コントローラ

@RequestMapping(value = "/disableEmployeeMaster", method = RequestMethod.POST) 
public @ResponseBody void disableEmployee(HttpServletRequest request) 
{ 
    EmployeeMaster employeeMaster = new EmployeeMaster(); 
    try 
    { 
     String employeeId = request.getParameter("employeeId"); 
     employeeMaster.setIsDel("Y"); 
     mainService.disableEmployee(employeeId , employeeMaster); 
    } 
    catch(Exception e) 
    { 
     logger.error(e.getMessage()); 
    } 
} 

サービス実装

@Override 
public void disableEmployee(String Id, EmployeeMaster employeeMaster) { 
    Session session = null; 
    Transaction transaction = null; 
    try 
    { 
     session = sessionFactory.openSession(); 
     transaction = session.beginTransaction(); 
     session.update(Id, employeeMaster); 
     transaction.commit(); 
    } 
    catch(Exception e) 
    { 
     System.out.println(e.getMessage()); 
    } 
    finally 
    { 
     session.close(); 
    } 
} 
+0

session.update()メソッドのパラメータは、モデルのオブジェクトです。 PKをお持ちの場合は自動的に行を更新します。 –

+0

これを見てくださいhttps://stackoverflow.com/questions/21124361/hibernate-delete-error-batch-update-returned-unexpected-row-count – Anptk

+0

仕様によると 'void update(String entityName、Object object) '、' 'Id'''" E02 "'は 'entityName'であってはならないと思います。 'EmployeeMaster'エンティティクラスを見せてもらえますか? –

答えて

0

あなたはEmployeeMasterクラスオブジェクトに設定し、社員をhave't。 エンティティを更新するには、主キーが必要です。 次のコードを参照できます。

employeeMaster.setEmployeeId(employeeId);

コントローラ

@RequestMapping(value = "/disableEmployeeMaster", method = RequestMethod.POST) 
 
public @ResponseBody void disableEmployee(HttpServletRequest request) 
 
{ 
 
    EmployeeMaster employeeMaster = new EmployeeMaster(); 
 
    try 
 
    { 
 
     String employeeId = request.getParameter("employeeId"); 
 
     employeeMaster.setEmployeeId(employeeId); 
 
     employeeMaster.setIsDel("Y"); 
 
     mainService.disableEmployee(employeeId , employeeMaster); 
 
    } 
 
    catch(Exception e) 
 
    { 
 
     logger.error(e.getMessage()); 
 
    } 
 
}

+0

私はこれを試しましたが、何も起こりませんでした。 – Viji

関連する問題