我注意到每次尝试访问同一个表时,hibernate会为相同的列生成不同的别名:
Hibernate: select person0_.id as id0_0_, person0_.nam as nam0_0_, person0_.fam as fam0_0_, person0_.otc as otc0_0_ from web_db.Person person0_ where person0_.id=?
Hibernate: select person0_.id as id4_0_, person0_.nam as nam4_0_, person0_.fam as fam4_0_, person0_.otc as otc4_0_ from web_db.Person person0_ where person0_.id=?
有没有办法让hibernate为相同的查询生成相同的别名?例如:
Hibernate: select person0_.id as id0_0_, person0_.nam as nam0_0_, person0_.fam as fam0_0_, person0_.otc as otc0_0_ from web_db.Person person0_ where person0_.id=?
Hibernate: select person0_.id as id0_0_, person0_.nam as nam0_0_, person0_.fam as fam0_0_, person0_.otc as otc0_0_ from web_db.Person person0_ where person0_.id=?
答案 0 :(得分:4)
查看涵盖此主题的HHH-2448,并提供确定性别名生成的补丁。
答案 1 :(得分:1)
首先,我使用的是Oracle 9i。
不同的查询会导致服务器进行硬解析。如果有许多此类查询,则数据库服务器责任正在下降。我们必须使用绑定变量来避免这个问题。
答案 2 :(得分:1)
无论如何,我的解决方案 - 命名查询,我将指定如何明确选择数据...
答案 3 :(得分:-1)
简短回答:不,
为什么?
这就是重点不是吗?您从实际的查询语句中抽象出来。