throw DataAccessException on error