【发布时间】:2016-09-07 09:11:32
【问题描述】:
我正在使用 Postgres 9.4.1209、Spring Boot 1.4.0 和 Hibernate 5.0.9 并尝试将动态分页查询发送到 Spring Data Repository。每当我的模型类具有以 camelCase 命名的属性时,这都会导致错误。
在Hibernate的QueryTranslatorImpl中生成的HQL是正确的:
select count(payment) from it.my.company.Payment payment where payment.externalId in (?1)
但是生成的 SQL 带有一个额外的下划线,其中我有驼峰式属性名称,因此 externalId 变为 external_id
select count(payment0_.id) as col_0_0_ from payment payment0_ where payment0_.external_id in (?)
不出所料,此查询失败,因为我的数据库中没有 external_id 列。
我直接使用了 Criteria API、Spring Specification API 和 QueryDSL 谓词,每次从 Hibernate 中弹出相同的错误。
作为一种解决方法,我尝试将所有模型类属性重命名为完全小写,这样可以解决错误。但是由于这个错误,我不想将我的所有属性重命名为可读性较差的样式=/
以前有人见过这样的事情吗?我目前正在通过 Hibernate 的 HqlSqlBaseWalker 进行调试,但这不是最易读的代码。
【问题讨论】:
标签: java postgresql hibernate spring-boot hibernate-criteria