Ho creato un database denominato 'movie_db', impostare lo schema predefinito su APP. Quindi ha creato una tabella di esempio denominata "UTENTI".Ometti lo schema nella query DERBY
La mia connessione a DB è la seguente:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="url" value="jdbc:derby://localhost:1527/movie_db"/>
<property name="username" value="root"/>
<property name="password" value="pass"/>
</bean>
Ora voglio scrivere alcuni test e provare a eseguire la seguente query:
SELECT * FROM USERS;
Cosa ottengo:
java.sql.SQLSyntaxErrorException: Table/View 'USERS' does not exist.
Quando specifico esattamente lo schema che sto usando:
SELECT * FROM APP.USERS
tutto funziona correttamente.
Come posso omettere il nome dello schema nella mia query?
UPDATE: Come Bryan ha detto, ho creato un utente con il nome del mio schema predefinito e autorizzo con questo login. Questo è il modo più semplice per omettere il nome dello schema nella query. Ma ancora se voglio usare più schemi l'unico modo è di impostare lo schema in modo esplicito.
Posso impostare esplicitamente schema nel mio bean? Ho provato impostando la proprietà e aggiungendo la coppia chiave-valore nell'URL, ma questo non ha funzionato per me. E se non è possibile dove esattamente è il modo migliore per impostare lo schema predefinito? All'interno di ogni metodo per accedere al DB della classe DAO? –
SET SCHEMA è un'istruzione SQL; è necessario inviare tale istruzione al database utilizzando l'API JDBC. Sembra che la tua vera domanda riguardi come ottenere tali istruzioni SQL emesse dalla libreria Object/Relational, che non è in realtà un problema Derby, ma un problema di libreria O/R. –
No, ho capito che lo schema set è un'istruzione sql :) Prima di tutto, ora non sto usando orm, ma questa non è una mia domanda. In realtà non capisco perché non riesco a impostare lo schema predefinito per il pool delle mie connessioni all'interno del blocco dell'origine dati nel contesto dell'app. L'ID non vuole hardcode il mio schema. –