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

一种方法是在您的控制器中执行

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 回答
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 回答