Yog*_*_NE 5 java mysql sql-server oracle hibernate
当我在 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 ...
只有列别名不断变化。表别名保持不变。有人可以帮助指出休眠如何在后缀中得出这些数字吗?另外,我可以完全停止这些后缀吗?我想要没有列别名或具有相同列别名的查询。
Oracle 中不同列别名造成的副作用之一是无法使用相同的 SQL 解释计划,因为它被锁定到特定查询。
小智 1
我认为这是 Oracle 的一个错误。别名不会改变查询!
我们的解决方案在 persistence.xml 中
<exclude-unlisted-classes>true</exclude-unlisted-classes>
所以重启后休眠会给出相同的别名!
通过开发下一个应用程序版本:您必须保持 persistence.xml 中的实体顺序。如果在现有“B”之前插入“A”实体,则 B 和 B 的列别名将不同。
有人有更好的解决方案吗?
| 归档时间: | 
 | 
| 查看次数: | 1232 次 | 
| 最近记录: |