在通过 createNativeQuery() 查询时,列名混合了大写和小写的列名被转换为小写 [重复]

Posted

技术标签:

【中文标题】在通过 createNativeQuery() 查询时,列名混合了大写和小写的列名被转换为小写 [重复]【英文标题】:while querying through createNativeQuery() with a column name which is a mixed of uppercase and lower case is getting converted into lower case [duplicate] 【发布时间】:2022-01-03 15:09:17 【问题描述】:

在通过 createNativeQuery() 查询时,使用混合了大写和小写的列名被转换为小写。下面是我的代码

Query query = entityManager.createNativeQuery("SELECT distinct a.admission_type_L1 FROM admission_type a");
    List<String> result=query.getResultList();

我得到的错误如下

Hibernate: SELECT distinct a.admission_type_L1 FROM admission_type a                                                                                                        
2021-11-25 15:28:21.646  WARN 2600 --- [  XNIO-1 task-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 42703                                           
2021-11-25 15:28:21.647 ERROR 2600 --- [  XNIO-1 task-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: column a.admission_type_l1 does not exist                          
Hint: Perhaps you meant to reference the column "a.admission_type_L1".

它说 admission_type_l1 不存在,但我正在通过 admission_type_L1

如果我使用没有大写的列名,它可以正常工作

我的数据库是 postgreqsl

【问题讨论】:

【参考方案1】:

PostgreSQL 将所有表列名转换为小写,除非被引用。

要在模式操作中保留自然大小写,必须引用标识符。

更多信息可以参考这个链接:https://www.drupal.org/project/drupal/issues/1600670

【讨论】:

以上是关于在通过 createNativeQuery() 查询时,列名混合了大写和小写的列名被转换为小写 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

createNativequery 中的 sql 注入

使用 entityManager.createNativeQuery(query,foo.class)

Hibernate CreateNativeQuery返回空列表

如何使用 CreateNativeQuery 从 SQL 数据库值中查询单个值?

可以createNativeQuery的EnityManager返回resultClass即dojo类

我的单元测试问题 - Junit - mockito - EntityManager - createNativeQuery