2009-11-29 9 views
6

zauważyłem, że hibernacja generuje różne aliasy dla tych samych kolumn za każdym razem staram się dostęp do tej samej tabeli:hibernacji, aliasy

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=? 

Czy istnieje jakiś sposób, aby dostać się do hibernacji w celu wygenerowania identycznych aliasów dla identycznych zapytań? Na przykład:

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

Dlaczego cię to obchodzi? –

+2

Dlaczego? Cały problem z używaniem Hibernacji polega na zarządzaniu mapowaniem ORM. Obawy o używane aliasy bez żadnego wyjaśnienia wyglądają trochę OCD ..;) – Tim

+0

Jedną z przyczyn jest to, że niektóre bazy danych nie optymalizują zapytań z tego powodu. Innym jest to, że MySQL Enterprise Monitor nie rozpoznaje, że te zapytania są takie same w analizatorze zapytań. – antonagestam

Odpowiedz

4

Wystarczy popatrzeć na HHH-2448 który obejmuje ten temat i ma poprawkę dla deterministycznego generacji aliasu.

-1

Krótka odpowiedź: nope

Dlaczego?
To wszystko, prawda? Jesteś wyodrębniony z rzeczywistych instrukcji zapytań.

+5

I jesteś również usunięty z faktu, że Oracle bierze pod uwagę te dwie różne instrukcje SQL, powodując trudne przetwarzanie i spadek wydajności. – ObiWanKenobi

2

Najpierw używam Oracle 9i.

Różne zapytania powodują, że serwer wykonuje twardą analizę. Jeśli istnieje wiele takich zapytań, odpowiedzialność za serwer bazy danych spada. Aby uniknąć tego problemu, musimy użyć zmiennych wiążących.

+1

Czy to jest odpowiedź? Nie używaj odpowiedzi do publikowania komentarzy/szczegółów, zamiast tego aktualizuj swoje pytanie. –

2

W każdym razie, moje rozwiązanie - nazwanych zapytań, gdzie będę określić jak wybrać dane wyraźnie ...