2013-06-29 17 views
5

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?

+0

Qual è la versione dell'ibernazione che stai utilizzando? –

+0

Sto usando Hibernate-4.2.2 –

+0

cosa succede se usi: schema = "users" catalog = "users"? – Rafa

risposta

1

È necessario specificare lo schema per il generatore. Vedi this question on SO per una risposta più dettagliata.