2012-08-02 70 views
7

我有一個Oracle數據庫,我必須使用主鍵的序列。這一切都很好,因爲我可以控制序列號。我的問題在於我的測試。使用Spring我創建一個HSQL數據庫並進行測試。這個數據庫是通過查看我所有的實體構建的。爲了與Oracle合作,我的所有實體都有指定的序列名稱。麻煩的是,當我構建HSQL數據庫它找不到序列(我期望)我的測試通過,但我最終在日誌中有很多cruft。日誌充滿了這些消息。在HSQL中缺少測試序列

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

有誰知道我可以如何刪除這些虛假的錯誤?我可以讓HSQL忽略序列嗎?有趣的是,在我可以插入HSQL數據庫的測試中,它必須使用它自己的內部主鍵生成器。

任何關於如何從日誌中刪除這些文件的想法?

感謝

回答

3

我通過手動創建序列作爲測試腳本的一部分來解決這個問題。不夠理想,因爲我寧願使用Spring/HSQL組合來設置它。我的代碼是:

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

其中序列是序列名稱的字符串列表。

我用這是每個測試類的@BeforeClass方法。不理想,但它確實解決了問題

1

嘗試用H2 database代替;它有一個名爲「Compatibility Modes」的功能,其功能類似於Oracle或HSQL。

選擇Oracle模式時,您應該能夠使用用於生產的相同腳本(或Hibernate設置)來初始化數據庫。

+0

謝謝亞倫,我會在午餐時看一看 – RNJ 2012-08-09 09:32:23

相關問題