Спящий, псевдонимы - PullRequest
       8

Спящий, псевдонимы

6 голосов
/ 29 ноября 2009

Я заметил, что 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: 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=?

Ответы [ 4 ]

4 голосов
/ 30 ноября 2009

Взгляните на HHH-2448 , который охватывает эту тему и содержит патч для генерации детерминированного псевдонима.

1 голос
/ 29 ноября 2009

Во-первых, я использую Oracle 9i.

Различные запросы заставляют сервер выполнять жесткий анализ. Если таких запросов много, ответственность сервера базы данных падает. Чтобы избежать этой проблемы, мы должны использовать переменные связывания.

1 голос
/ 29 ноября 2009

Во всяком случае, мое решение - именованные запросы, где я укажу, как явно выбирать данные ...

0 голосов
/ 29 ноября 2009

Краткий ответ: Нет

Почему?
Вот и весь смысл, не так ли? Вы абстрагированы от фактических операторов запроса.

...