2013-06-29 11 views
5

Używam Hibernuj i serwer MySql. Używam wielu baz danych jako "przestrzeni nazw" (np. users, transactions, logging itp.).Dlaczego Hibernate generuje to zapytanie SQL?

Więc configued Hibernate aby nie podłączać do konkretnej bazy danych:

url = jdbc:mysql://127.0.0.1/

Bazy danych, gdzie znajdują się tabele są zdefiniowane w plikach HBM za pomocą atrybutu catalog:

<class name="com.myApp.entities.User" table="user" schema="" catalog="users"> ... 

Kiedy chcę załadować niektóre dane, wszystko działa poprawnie, a Hibernate wydaje się generować oczekiwane zapytania SQL (używając prefiksu katalogu w nazwach tabel), np. :

select id from users.user 

Jednak gdy próbuję dodać nowy rekord, Hibernate nie używać składni from [catalog].[table_name] więcej. W związku z tym pojawia się błąd MySQL "Nie wybrano żadnej bazy danych".

select max(id) from user 

Hibernate stara get przyszły, aby stworzyć nowy rekord, ale nie określa, w którym baza danych znajduje się stół, powinno być:

select max(id) from users.user 

Dlaczego jest generowanie Hibernate to nieprawidłowe zapytanie? Czy ktoś kiedykolwiek doświadczył tego problemu?

+0

W jakiej wersji używasz hibernacji? –

+0

Używam Hibernate-4.2.2 –

+0

co się stanie, jeśli użyjesz: schema = "users" catalog = "users"? – Rafa

Odpowiedz

1

Należy określić schemat generatora. Aby uzyskać bardziej szczegółową odpowiedź, patrz: this question on SO.

Powiązane problemy