Sto utilizzando Hibernate e un server MySql. Uso più database come "namespace" (ad esempio users
, transactions
, logging
ecc.).Perché Hibernate genera questa query SQL?
Così, ho configued Hibernate a non connettersi a un particolare database:
url = jdbc:mysql://127.0.0.1/
I database in cui si trovano le tabelle sono definiti nei file HBM attraverso l'attributo catalog
:
<class name="com.myApp.entities.User" table="user" schema="" catalog="users"> ...
Quando voglio caricare alcuni dati, tutto funziona correttamente e Hibernate sembra generare le query SQL previste (utilizzando il prefisso del catalogo nei nomi delle tabelle), ad es. :
select id from users.user
Tuttavia, quando si tenta di aggiungere un nuovo record, Hibernate non utilizzare più la sintassi from [catalog].[table_name]
. Quindi ottengo un errore MySQL 'Nessun database selezionato'.
select max(id) from user
Hibernate sta cercando l'ottenere il futuro id per creare un nuovo record, ma non specifica in quale database si trova la tabella, dovrebbe essere:
select max(id) from users.user
Perché sta generando Hibernate questa query non valida? Qualcuno ha mai sperimentato questo problema?
Qual è la versione dell'ibernazione che stai utilizzando? –
Sto usando Hibernate-4.2.2 –
cosa succede se usi: schema = "users" catalog = "users"? – Rafa