try {
result = (T) query.getSingleResult();
return result;
} catch (NonUniqueResultException e) {
throw new DaoException("The query '" + query + "' should get a single result. Error message: "
+ e.getMessage(), e);
} catch (NoResultException e) {
return null;
} catch (RuntimeException e) {
throw new DaoException("Cannot run query '" + query + "'. Runtime exception: " + e.getMessage(), e);
} finally {
logQueryResult(startTime, result);
}
}