当我在我的Java应用程序中监视由hibernate生成的SQL查询时,查询中使用的每列都有列别名。但是列别名后缀为不同的JVM实例的不同数字。
例如:
select user0.ID as ID1_276_,
user0.DESCRIPTOR_ID as DESCRIPTOR10_276_,
user0.USER_ID as USER11_276_
from CI_USER user0
where ...
但是,当重新启动应用程序时,列别名中的后缀会不断变化。我不确定这些后缀的逻辑或公式究竟是什么,即_276_
。有时,相同的查询显示如下内容:
select user0.ID as ID1_144_,
user0.DESCRIPTOR_ID as DESCRIPTOR10_144_,
user0.USER_ID as USER11_144_
from CI_USER user0
where ...
只有列别名不断变化。表别名保持不变。有人可以帮助指出hibernate如何在后缀中提出这些数字吗?另外,我可以完全停止这些后缀吗?我想要没有列别名或具有相同列别名的查询。
Oracle中不同列别名导致的副作用之一是无法使用相同的SQL解释计划,因为它已锁定到特定查询。
答案 0 :(得分:0)
我认为这是Oracle的错误。别名不会更改查询!
我们的解决方案在persistence.xml中 真正 因此,重新启动后,休眠模式将赋予相同的别名!
通过开发下一个应用版本: 您必须将实体顺序保持在persistence.xml中。如果在现有“ B”之前插入“ A”实体,则B和B的列别名将不同。
有更好的解决方案吗?