在通过 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() 查询时,列名混合了大写和小写的列名被转换为小写 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 entityManager.createNativeQuery(query,foo.class)
Hibernate CreateNativeQuery返回空列表
如何使用 CreateNativeQuery 从 SQL 数据库值中查询单个值?
可以createNativeQuery的EnityManager返回resultClass即dojo类
我的单元测试问题 - Junit - mockito - EntityManager - createNativeQuery