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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate映射postgreSQL数据库中的表时,表名是大写的时候为啥hibernate不能映射实体相关的知识,希望对你有一定的参考价值。

并且当表中的字段名为大写的时候为什么,不能关联导致不能查询出数据,没有豆豆了,麻烦各位解答一下,谢谢

数据库里面的字符不分大小写,但是java实体类的属性是敏感的,所以写配置文件时属性名一定要跟实体类里面一样的,列名不用管大小写问题。
但是你写hql时:例如:select * from User ,这个User 是你的实体类名,不是你的表名,hibernate是通过配置文件将表名与实体类名映射的。追问

您好,比如当用户创建table的时候他用命令 Create “Table”,这样出来的表名就是大写的,导致hibernate没有办法映射为实体类,再次就是当列名为大写的时候,其实也就是当用户创建列名的时候他是“CloumnName”这种导致不管你后台传过去的列名是什么样的都没有办法查询只有用“列名”这种能查询出结果,不知道有什么办法既能读取带有引号的列名和没有引号的列名

追答

当你创建一个表名字为“Table”时,hibernate的映射文件会有响应的配置
比如;这里不用转义
另外当列名为大写时,名字为“CloumnName”,实体类得属性名为:‘name’。
例如:
最后你写sql查询时这样写的:select name from TestTable where id=1

参考技术A 在你的映射文件里面把class name="" table="" 把table加上就行了。大小写问题追问

class name="\" table\""
这种在XXX.hbm.xml中加上转义符和双引号会报错的

追答

不能加转义符哈,如果表名是关键字,用``

参考技术B 数据库 和映射文件 或者注解 的字段名最好一样 大小写一致 表字段改成大写 映射关系中也改成大写 试试

以上是关于hibernate映射postgreSQL数据库中的表时,表名是大写的时候为啥hibernate不能映射实体的主要内容,如果未能解决你的问题,请参考以下文章

将 PostgreSQL JSON 列映射到 Hibernate 实体属性

如何使用 JPA 和 Hibernate 映射 PostgreSQL 枚举

PostgreSQL 枚举和 Java 枚举之间的休眠映射

jOOQ 无法映射 PostgreSQL 列以使 JPA 满意

如何让hibernate映射时字段区分大小写

如何用 Hibernate 映射用户数据类型(复合类型)