5
我已經創建了一個名爲'movie_db'的數據庫,將默認模式設置爲APP。 然後創建一個名爲'USERS'的示例表。在DERBY查詢中省略模式
我對DB連接如下:
<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>
現在我想寫一些測試,嘗試執行以下查詢:
SELECT * FROM USERS;
我能得到什麼:
java.sql.SQLSyntaxErrorException: Table/View 'USERS' does not exist.
當我明確指定我正在使用的模式時:
SELECT * FROM APP.USERS
一切工作正常。
如何在我的查詢中省略模式名稱?
UPDATE: 像布賴恩說,我創建了一個用戶與我的默認架構的名稱以及與此登錄授權。這是在查詢中省略模式名稱的最簡單方法。但是,如果我想使用多個模式,唯一的方法是明確地設置模式。
我可以在我的bean中顯式設置模式嗎?我試着通過設置屬性並在url中添加鍵值對,但那對我沒有用。如果不可能,設置默認模式的最佳方式是什麼?在訪問DAO類的數據庫的每種方法中? –
SET SCHEMA是一個SQL語句;您需要使用JDBC API將該語句發送到數據庫。這聽起來像你真正的問題涉及如何獲得由對象/關係庫發佈的這樣的SQL語句,這不是真正的Derby問題,而是O/R庫問題。 –
不,我知道set schema是一個sql語句:)首先,現在我沒有使用orm,但這不是我的問題。我其實不明白爲什麼我不能在app-context中的數據源塊中爲我的連接池設置默認模式。我不想硬編碼我的模式。 –