首页 > 解决方案 > 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

用例:

  1. 自动为每个实体创建视图
  2. 为我们的数据库管理员提供更好的可读性

我已经调试了好几个小时来找到影响机制的解决方案。

我希望有人知道如何解决这个问题(没有黑客攻击)!

我知道这是一个不传统的问题,所以我会很高兴,有人有想法;-)

提前致谢

安迪

标签: sqlhibernatehqltranslationalias

解决方案


您面临的问题称为Hibernate 命名策略

在这里https://www.baeldung.com/hibernate-naming-strategy您可以找到有关如何通过实现接口来自定义生成的列名的更深入的解释PhysicalNamingStrategy


推荐阅读