0

LoadDaoHbm.java私は自分のメソッドが呼び出されたクラスを持っています

@Override
@Transactional(propagation = Propagation.MANDATORY)
public int getPackageCount(Load load) {
    Session s = getSessionFactory().getCurrentSession();
    Query q = s.createQuery("select count(distinct p.trackingNumber) from BasePiece p where p.load = :load");
    q.setEntity("load", load);
    Long count = (Long) q.uniqueResult();
    return count.intValue();
}

私のコントローラーでは、このメソッドを呼び出してカウントを取得しています

int pkgCount = loadDao.getPackageCount(load);

コントローラーでこの時点に到達すると、メソッドに移動してデータを取得します。ただし、一意の結果が得られない場合があります。より多くの結果がある場合、例外が発生します。この例外をキャッチしてエラーとして表示するにはどうすればよいですか?

提案は大歓迎です!前もって感謝します!

4

2 に答える 2

0
try {

 int pkgCount = loadDao.getPackageCount(load);
}
catch (Name_of_the_exception ex) {
// put code that handles the exception here
....
} 

エラー ログで例外の名前を調べて、catch ブロックに入れます。

于 2012-11-09T14:47:20.460 に答える
0

1つの方法は、コントローラーで行うことです

int pkgCount = -1
try {
    pkgCount = loadDao.getPackageCount(load);
} catch (SpecificUniqueException) {
    // route to your error page for this error
}

一意の制約違反に対してスローされた例外のみをキャッチするように注意してください。そうしないと、他のエラーを飲み込む可能性があります。

これがアプリのエラー条件でない場合は、別の DAO メソッドを記述して、一意の条件が有効かどうかを判断し、例外を使用しないことを検討してください。例外は例外的なシナリオです。

于 2012-11-09T14:44:43.323 に答える