Чувствительность к регистру пароля имени пользователя Hibernate с Oracle11g - PullRequest
2 голосов
/ 30 июня 2011

Я использую Hibernate с Oracle 11g.Код, который работал с 10g, не работает с 11g, потому что hibernate меняет регистр имени пользователя с примера: admin на ADMIN.Oracle 11g по умолчанию создает регистрозависимые имена пользователей и пароли.Я уже создал пользователя и множество объектов, прежде чем понял, что мой код:

Context initCtx = new InitialContext();

Context envCtx = (Context)initCtx.lookup("java:comp/env");

DataSource ds = (DataSource)envCtx.lookup("jdbc/AdminDS");

Connection con  = ds.getConnection();

Соединение не работает, поскольку имя пользователя в базе данных - это строчные буквы admin, а hibernate преобразует его в прописные ADMIN.

Я пробовал несколько вещей ... в том числе создание соединения с использованием строчных букв, имени пользователя и пароля;например, ds.getConnection ("admin", "password") .... не игра в кости .... есть идеи относительно того, как преобразовать имя пользователя в строчные, потому что во время развертывания ....

Ответы [ 2 ]

3 голосов
/ 30 июня 2011

Ни одна версия Oracle по умолчанию не создает имена пользователей с учетом регистра.Вы всегда (по крайней мере, в течение последних 15–20 лет) могли создавать имена пользователей с учетом регистра, но при создании их необходимо заключать в кавычки имя пользователя.Что-то вроде

SQL> create user "MyCaseSensitiveUser" ...

Предполагается, что вы запустили тот же DDL в базе данных 11g, что и в 10g, это означает, что вы не добавляли двойные кавычки вокруг имени пользователя в своем выражении CREATE USER и чтоимя пользователя фактически не учитывает регистр.

В 11g Oracle начала использовать пароли с учетом регистра по умолчанию.Поэтому я предполагаю, что проблема в том, что пароль, передаваемый из Hibernate, не использует надлежащий регистр.Вы можете отключить чувствительные к регистру пароли в базе данных, вернувшись к поведению 10g, изменив параметр инициализации SEC_CASE_SENSITIVE_LOGON.Надеюсь, кто-то, кто более знаком с Hibernate, может подсказать, как заставить Hibernate отправлять пароли в базу данных с учетом регистра.

0 голосов
/ 18 августа 2011

Это может показаться глупым ответом, но когда у меня возникла эта проблема, я просто изменил свой пароль на пароль в верхнем регистре, и это сработало. Не мое идеальное решение ...

...