数据库里面的字符不分大小写,但是java实体类的属性是敏感的,所以写配置文件时属性名一定要跟实体类里面一样的,列名不用管大小写问题。
但是你写hql时:例如:select from User ,这个User 是你的实体类名,不是你的表名,hibernate是通过配置文件将表名与实体类名映射的。
方法/步骤
找到myini或者mycnf文件
配置文件
可以用mysql
--help看到他的加载顺序
2
打开文件,找到[mysqld]在下面增加一行
lower_case_table_names=0
(0:大小写敏感;1:大小写不敏感)
3
重启Mysql服务
Windows我在测试时发现重启后有如下提示,估计是不支持Windows
是区分大小写的
在SQLServer中区分大小写的几种方法
今天碰到这个问题了,问了一下朋友,给出了以下几种解决方法,贴出来大家都看一下:
第一种:
ALTER TABLE tb
ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS
--不区分大小写
ALTER TABLE tb
ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CS_AS
--区分大小写
alter database 数据库 COLLATE Chinese_PRC_CS_AS
第二种:
--创建如下用户自定义函数(UDF)
CREATE FUNCTION StrComp(@Str1 VARCHAR(50),@Str2 VARCHAR(50))
--ALTER FUNCTION StrComp(@Str1 VARCHAR(50),@Str2 VARCHAR(50))
RETURNS INTEGER
AS
BEGIN
DECLARE @i INTEGER
--DECLARE @Str1 VARCHAR(50)
--DECLARE @Str2 VARCHAR(50)
DECLARE @y INT
--SET @Str1='a'
--SET @Str2='A'
SET @i=0
--SELECT ASCII(SUBSTRING(@Str1,@i+1,1))
SET @y=1
DECLARE @iLen INT
SET @iLen = LEN(LTRIM(RTRIM(@Str1)))
IF LEN(LTRIM(RTRIM(@Str1))) < LEN(LTRIM(RTRIM(@Str2))) --THEN
SET @iLen = LEN(LTRIM(RTRIM(@Str2)))
WHILE (@i < @iLen)
BEGIN
IF (ASCII(SUBSTRING(@Str1,@i+1,1))=ASCII(SUBSTRING(@Str2,@i+1,1))) --THEN
SET @i = @i +1
ELSE
BEGIN
SET @y=0
BREAK
END
END
RETURN @y
END
测试:
select
from Table1
Where dboStrComp(Field1,'aAbB') =1
第三种:
SQL Server 数据库中的文本信息可以用大写字母、小写字母或二者的组合进行存储。例如,姓氏可以"SMITH"、"Smith"或"smith"等形式出现。
数据库是否区分大小写取决于 SQL Server 的安装方式。如果数据库区分大小写,当搜索文本数据时,必须用正确的大小写字母组合构造搜索条件。例如,如果搜索名字"Smith",则不能使用搜索条件"=smith"或"=SMITH"。
这个 ALTER DATABASE 语句用来修改数据库的属性,比如改变它的默认排序规则(即 COLLATE)。因此,你可以使用它来设置数据库中所有表都区分大小写。
要使用这个语句,你需要先确保你有足够的权限去修改数据库。然后,你可以在 SQL Server Management Studio 中执行以下步骤:
打开 SQL Server Management Studio 并连接到你想要修改的数据库服务器。
在对象资源管理器中,右键单击你想要修改的数据库,然后选择“属性”。
在“数据库属性”窗口中,选择“排序规则”选项卡。
在“排序规则”下拉列表中,选择“Chinese_PRC_CS_AS”。
单击“确定”按钮以保存更改。
这样,数据库中的所有表都将区分大小写。但是,如果你只想修改某个特定的表,那么你可以在创建表时指定它的排序规则,或者使用 ALTER TABLE 语句来修改表的排序规则。
举个例子,假设你想要修改名为“TBL_ACCOUNT”的表,使其区分大小写,你可以在创建表时指定排序规则:
这个 ALTER DATABASE 语句用来修改数据库的属性,比如改变它的默认排序规则(即 COLLATE)。因此,你可以使用它来设置数据库中所有表都区分大小写。
要使用这个语句,你需要先确保你有足够的权限去修改数据库。然后,你可以在 SQL Server Management Studio 中执行以下步骤:
打开 SQL Server Management Studio 并连接到你想要修改的数据库服务器。
在对象资源管理器中,右键单击你想要修改的数据库,然后选择“属性”。
在“数据库属性”窗口中,选择“排序规则”选项卡。
在“排序规则”下拉列表中,选择“Chinese_PRC_CS_AS”。
单击“确定”按钮以保存更改。
这样,数据库中的所有表都将区分大小写。但是,如果你只想修改某个特定的表,那么你可以在创建表时指定它的排序规则,或者使用 ALTER TABLE 语句来修改表的排序规则。
举个例子,假设你想要修改名为“TBL_ACCOUNT”的表,使其区分大小写,你可以在创建表时指定排序规则:
CREATE TABLE TBL_ACCOUNT (
id INT PRIMARY KEY,
username VARCHAR(255) COLLATE Chinese_PRC_CS_AS,
password VARCHAR(255)
);
或者,如果你已经创建了表,你可以使用 ALTER TABLE 语句来修改表的排序规则:
ALTER TABLE TBL_ACCOUNT
ALTER COLUMN username VARCHAR(255) COLLATE Chinese_PRC_CS_AS;
这样就可以让表“TBL_ACCOUNT”区分大小写了。
以上就是关于hibernate映射postgreSQL数据库中的表时,表名是大写的时候为什么hibernate不能映射实体全部的内容,包括:hibernate映射postgreSQL数据库中的表时,表名是大写的时候为什么hibernate不能映射实体、mysql怎么设置表名的大小写、sqlserver区分大小写吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)