2012-08-02 14 views
7

Ho un database Oracle in cui devo usare sequenze per la chiave primaria. Tutto funziona bene perché ho il controllo sul numero di sequenza. Il mio problema è con i miei test. Usando Spring creo un db HSQL e provo contro questo. Questo database è costruito guardando tutte le mie entità. Tutte le mie entità per il gusto di lavorare con Oracle hanno un nome di sequenza specificato. Il problema è che quando costruisco il db HSQL non riesco a trovare la sequenza (che mi aspetto) I miei test passano ma finisco con un sacco di cruft nel log. Il registro è pieno di questo tipo di messaggi.Sequenze mancanti in HSQL per il test

WARN JDBCExceptionReporter:233 - SQL Error: -5501, SQLState: 42501 
ERROR JDBCExceptionReporter:234 - user lacks privilege or object not found: GENDERS_SEQ 

Qualcuno sa come rimuovere questi errori spuri? Posso ottenere HSQL per ignorare le sequenze. È interessante notare che nei test posso inserire nel database HSQL, quindi deve utilizzare il proprio generatore di chiavi primarie interno.

Qualche idea su come rimuovere questo cruft dal registro?

Grazie

risposta

3

Ho risolto questo creando manualmente sequenze come parte del mio script di test. Non ideale come preferirei la combinazione Spring/HSQL. Il mio codice è:

for (String sequence : sequences) { 
    entityManager.createNativeQuery("DROP SEQUENCE " + sequence + " IF EXISTS").executeUpdate(); 
    entityManager.createNativeQuery("CREATE SEQUENCE " + sequence + " as INTEGER").executeUpdate(); 
} 

dove sequenze è un elenco di stringhe che sono il nome della sequenza.

Ho usato questo è il metodo @BeforeClass per ogni classe di test. Non ideale ma risolve il problema

1

Provare invece il H2 database; ha una funzionalità chiamata "Compatibility Modes" in cui si comporta come Oracle o HSQL.

Quando si seleziona la modalità Oracle, si dovrebbe essere in grado di inizializzare il database con gli stessi script (o la configurazione di Hibernate) che si utilizzano per la propria produzione.

+0

Grazie Aaron, darò un'occhiata a questo all'ora di pranzo – RNJ

Problemi correlati