2014-01-10 50 views
0

我有一些從配置XML文件生成的HQL查詢(〜2000)。如何測試HQL查詢編譯?

當然,如果集成測試涵蓋所有這些情況,那將是非常好的,但不幸的是,這是來自我公司認爲測試的時代之前的舊代碼是一個好主意。

編寫覆蓋所有這些文件的完整集成測試顯然已經超出了範圍。然而,它會幫助您找到導致錯誤查詢的配置文件,如from SomeRandomUnmappedClassselect propertyThatDoesNotExist from SomeClass。如果沒有設置參數並且沒有與實際數據庫進行通信,快速「編譯檢查」應該可以做到。但是,這怎麼做呢?

(順便說一句:我停留在古代的Hibernate 3.3.2)

+0

爲什麼不創建使用[HSQLDB](http://hsqldb.org/)測試數據庫,這是一個內存數據庫理想地適合於測試目的。 – Bohemian

+0

因爲生成的查詢可以有參數,而我沒有參數的值。 – yankee

回答

0

其實這是該死的簡單:既然你有集成測試的設置啓動與HSQLDB休眠上下文反正你可以執行:

session.createQuery(hql); 

這會返回一個查詢對象,通常您會設置參數然後執行查詢。但是在createQuery期間 - 調用期望的檢查已經執行。如果出現錯誤,則拋出異常。只需刪除參數設置和執行!

(有時溶液是太明顯;-))