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?
W jakiej wersji używasz hibernacji? –
Używam Hibernate-4.2.2 –
co się stanie, jeśli użyjesz: schema = "users" catalog = "users"? – Rafa