Db2 9 выбрасывает InvalidDataAccessResourceUsageException вместо PermissionDeniedDataAccessException - PullRequest
1 голос
/ 14 января 2010

У меня есть приложение Java, которое запрашивает таблицу базы данных, к которой текущая учетная запись пользователя может иметь или не иметь доступа. Если возвращается исключение, я хотел бы различать AccessDenied и сервер базы данных, который отключен / отключен. Я ожидал, что db2 сгенерирует PermissionDeniedDataAccessException, когда у пользователя нет привилегий выбора для таблицы. Однако, когда я тестировал его, db2 выдал исключение InvalidDataAccessResourceUsageException.

Безопасно ли перехватывать InvalidDataAccessResourceUsageException и обрабатывать его как исключение AccessDenied? Почему db2 не генерирует PermissionDeniedDataAccessException?

К вашему сведению: я использую драйвер JDBC для db2, а не драйвер ODBC, поэтому я ожидал лучшей поддержки Java.

Ответы [ 2 ]

0 голосов
/ 14 января 2010

Если алгоритм преобразования исключений Spring неправильно отображает код исключения SQL в исключение Spring, вы можете самостоятельно определить код SQL и настроить преобразование исключений, как описано здесь: 12.2.4 SQLExceptionTranslator

0 голосов
/ 14 января 2010

Интересно, что вы пометили этот вопрос словом «весна», хотя вы больше об этом не упоминаете. Вы должны рассмотреть использование Spring JdbcTemplate для доступа к БД. В результате все сгенерированные исключения будут преобразованы в общие исключения Spring, и вам не нужно заботиться о конкретных исключениях СУБД. Это переведет любое исключение в (подкласс) DataAccessException. Существует также PermissionDeniedDataAccessException, которая может возникнуть, если у пользователя нет разрешения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...