sql - HQL 到 SQL 转换 - 为列定义有意义的别名
问题描述
我有棘手的问题:
当我将 HQL 转换为 SQL(使用org.hibernate.hql.spi.QueryTranslator
)时,我得到了一个有效的 SQL。
Hibernate:解析/翻译 HQL FROM 部分以获取对类别名、类名
它按预期工作!
但是,我的问题是列别名的转换!
HQL 到 SQL
*) 实体的 HQL:Base
SELECT Base FROM Base Base
导致:
*) 实体的 SQL:基础
select base0_.iD as id1_0_, base0_.comment as comment2_0_, base0_.creationDate as creation3_0_ from ...
您可以看到我的问题:列的别名不是直观的名称:
base0_.creationDate --> creation3_0_
预期的:
base0_.creationDate --> creationDate
用例:
- 自动为每个实体创建视图
- 为我们的数据库管理员提供更好的可读性
我已经调试了好几个小时来找到影响机制的解决方案。
我希望有人知道如何解决这个问题(没有黑客攻击)!
我知道这是一个不传统的问题,所以我会很高兴,有人有想法;-)
提前致谢
安迪
解决方案
您面临的问题称为Hibernate 命名策略。
在这里https://www.baeldung.com/hibernate-naming-strategy您可以找到有关如何通过实现接口来自定义生成的列名的更深入的解释PhysicalNamingStrategy
。
推荐阅读
- python - AttributeError:模块“pandas.io”没有属性“common”
- php - AWS RDS DB 部署时速度慢
- java - 如果发生异常,如何继续循环迭代?
- android - Android studio,构建kotlin时出现奇怪错误:生成错误代码
- python - python错误的subprocess.call返回码
- windows - 如何终止使用 winexec() 创建的进程?
- apache - Avro 消息中的模式
- node.js - 如何在节点 js 中使用多线程?
- jquery - Span 的增量值仅一次
- android - 将 BroadcastReceiver 添加到 FirebaseMessagingServices