我想在更新桌面應用程序後在嵌入式derby數據庫上運行更改。要做到這一點,我試圖創建一個JPS庫與我類似這樣ALTER查詢:數據庫更改和彈簧啓動JPA
@Repository
public interface DatabaseUpdates {
@Modifying
@Query("alter table my_table add column my_column clob", nativeQuery = true)
void alterMyTableAddMyColumn();
}
並使用它在更新類這樣
@Component
public class DatabaseUpdater {
@Autowired
private DatabaseUpdates databaseUpdates;
private void alterMyTable() {
// some logic that checks it the update needs to happen is here
databaseUpdates.alterMyTableAddMyColumn();
}
}
這引發NoSuchBeanDefinitionException: No qualifying bean of type DatabaseUpdates
例外。
我也試過讓DatabaseUpdates
擴展org.springframework.data.repository.Repository
,但後來遇到了使用什麼類型的問題。我正在使用spring-boot-starter-data-jpa
1.2.3.RELEASE。
編輯:這是爲了支持遺留應用程序,我正在尋找直接支持數據庫更新的方法。數據庫遷移工具很好,但不在此修補程序的範圍內。我一直希望這個項目已經使用了一個多月的時間,並且很快就會將其整合到下一個版本中。
所以你認爲這個「alter table my_table add column my_column clob」是JPQL嗎?那不是。這是SQL。 –
@NeilStockton我忘記了'nativeQuery = true'國旗抱歉。我試圖用遺留代碼解決一些問題,並且不熟悉JPA或Spring。 – nash
@nash真的需要在運行時發生嗎?你不能直接讓他們直接到數據庫?如果是這樣,你是否可以創建一個簡單的鍵/值表,讓你獲得各種數據元素並將它們關聯回記錄?例如而不是將第Y列的值Y添加到表Q中,您可以創建一個FK到Q記錄的表以及Key和Value列。因此,你可以是完全可擴展的(儘管你失去了類型安全性,但是如果你使用clobs,你會失去它) – Ben