Hibernate用户名密码与Oracle11g区分大小写

Hibernate用户名密码与Oracle11g区分大小写,hibernate,oracle11g,passwords,case-sensitive,Hibernate,Oracle11g,Passwords,Case Sensitive,我正在Oracle 11g中使用Hibernate。使用10g的代码不适用于11g,因为hibernate将用户名的大小写从示例admin更改为admin。Oracle 11g默认创建区分大小写的用户名和密码。在意识到我的代码之前,我已经创建了用户和许多对象: Context initCtx = new InitialContext(); Context envCtx = (Context)initCtx.lookup("java:comp/env"); DataSource ds = (D

我正在Oracle 11g中使用
Hibernate
。使用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


我尝试了多种方法…包括使用小写用户名、密码创建连接;e、 例如,ds.getConnection(“admin”、“password”)……没有骰子……关于如何将用户名转换为小写的任何想法,因为在部署时……

没有Oracle版本默认创建区分大小写的用户名。您始终(至少在过去15-20年中)能够创建区分大小写的用户名,但在创建用户名时必须将用户名括在双引号中。差不多

SQL> create user "MyCaseSensitiveUser" ...
假设您在11g数据库中运行的DDL与在10g中运行的DDL相同,这意味着您在
CREATE USER
语句中没有在用户名周围添加双引号,并且用户名实际上不区分大小写


在11g中,Oracle确实开始默认使用区分大小写的密码。因此,我假设问题在于从Hibernate传入的密码没有使用正确的大小写。通过更改
SEC\u case\u sensitive\u LOGON
初始化参数,可以禁用数据库中区分大小写的密码,恢复到10g行为。希望更熟悉Hibernate的人能够建议如何让Hibernate以区分大小写的方式向数据库发送密码。

这似乎是一个愚蠢的答案,但当我遇到这个问题时,我只是将密码更改为全大写密码,它就起了作用。不是我理想的解决方案