2016-05-20 5 views
0

トランザクションのロールバックを実行するために例外をキャッチするDAOメソッドがあります。例外をキャッチし、失敗した操作についての警告を表示します。

public void edit(Employees em) { 
    Session s = HibernateUtil.getSessionFactory().getCurrentSession(); 

    try { 
     s.beginTransaction(); 
     s.update(em); 
     s.getTransaction().commit(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     s.getTransaction().rollback(); 
    } 
} 

フロントエンドでは、以下のように呼びます。

public String save() { 
    Employee_dao dao = new Employee_dao(); 
    dao.edit(emp); 
    return "index"; 
} 

しかし、私はフロントエンドで例外をキャッチしたいので、エンドユーザーにメッセージを表示できます。ロールバックを実行しているときにこれをどのように達成できますか?

+0

_「このような挿入が失敗した場合、それが戻ってユーザーを取りますメインメニュー(index.html)に移動してください。 "_これは、これを行うように指示したときにのみ発生します(どこかで)。解決策は、エラーをキャッチして顔のメッセージを追加してクライアントに表示することです。通常、[mcve]とバージョン情報は必ず**質問と一緒に投稿する必要があります。 – Kukeltje

+1

元の質問は長すぎました。私は、JSF/Hibernate/PostgreSQLがまったく関連していない、具体的な問題に焦点を当てるように言い換えました。 – BalusC

答えて

1

あなたは、単に例外を再スロー、あるいはあなたがフロントエンドでそれを必要とする場合より多くの情報が含まれている例外でそれをラップすることができます:

public void edit(Employees em) throws Exception { 
    // ... 
    try { 
     s.beginTransaction(); 
     // ... 
    } catch (Exception e) { 
     s.getTransaction().rollback(); 
     throw e; 
     // or throw new MyException("edit failed", e); 
     // or throw new RuntimeException(...); 
    } 
} 

public String save() { 
    Employee_dao dao = new Employee_dao(); 
    try { 
     dao.edit(emp); 
     return "index"; 
    } catch (Exception e) { 
     return "error"; 
    } 
} 
+0

throw My MyException( "編集に失敗しました"、e);私は、IDEコンソールで「編集に失敗しました」というメッセージしか表示されないと思います。アラートボックスなどでそのメッセージをユーザーに表示する必要があります。可能な限り簡単な解決策は私にとってはうまくいくでしょう。グラフィックは重要ではない、私はただメッセージをユーザに示す必要がある – NoobNe0

関連する問題