hibernate映射postgreSQL数据库中的表时,表名是大写的时候为什么hibernate不能映射实体

hibernate映射postgreSQL数据库中的表时,表名是大写的时候为什么hibernate不能映射实体,第1张

数据库里面的字符不分大小写,但是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区分大小写吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9437297.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存