2009-11-29 131 views
6

我注意到,休眠對於同一列產生不同的別名每次我嘗試訪問同一個表:休眠,別名

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: 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=? 
+1

你爲什麼在意? – 2009-11-29 12:40:08

+2

爲什麼?使用Hibernate的關鍵是讓它管理你的ORM映射。擔心使用的別名而沒有任何解釋看起來有點OCD ..;) – Tim 2009-11-29 12:41:03

+0

原因之一是一些數據庫無法優化查詢,因此。另一個原因是MySQL Enterprise Monitor無法識別查詢分析器中的這些查詢是否相同。 – antonagestam 2017-11-21 20:20:32

回答

4

看一看HHH-2448覆蓋這一主題,具有確定性的別名生成補丁。

-1

簡短的回答:沒有耶

爲什麼?
這是整點不是嗎?你從實際的查詢語句中抽象出來。

+5

而且你也被抽象出Oracle認爲這兩個不同的SQL語句的事實,導致硬解析和性能下降。 – ObiWanKenobi 2009-11-29 22:21:13

2

首先,我使用的是Oracle 9i。

不同的查詢會導致服務器難以解析。如果有許多這樣的查詢,數據庫服務器的職責正在下降。我們必須使用綁定變量來避免這個問題。

+1

這是一個答案?不要使用答案發表評論/細節,而是更新您的問題。 – 2009-11-29 23:15:57

2

不管怎樣,我的解決方案 - 命名查詢,在那裏我會指定如何明確地選擇數據...