2016-04-15 45 views

回答

2

您可以使用Hibernate,它具有MySQL和Oracle的方言。但是如果你使用原生查詢,那麼你應該爲每種方言使用單獨的代碼。

BaseHibernateDAO您可以創建一個方法

protected Dialect getDialect(){ 
    return ((SessionFactoryImplementor) sessionFactory).getDialect(); 
} 

然後你可以使用這個方言爲你創建的任何查詢。

+0

是的,我使用原生查詢,它們大約10000數。我無法測試每一個查詢,然後更改代碼,這就是爲什麼我要求任何解決方案。謝謝,但它不認爲它是一個更好的主意,使用一個單獨的代碼。@ Roman C –

+0

我還建議你使用Hibernate與HQL查詢。任何你必須使用oracle的方式,然後更好的先寫HQL然後它將適應任何數據庫。 – Mohan

+0

您可以舉幾個例子嗎?@ RomanC –

0

在我看來你已經回答了你自己的問題。 MySQL查詢並不完全與ORACLE兼容(例如:MySQL中的LIMIT是ORACLE中的ROWNUM)。 因此,如果您有'原始SQL'語句涉及MYSQL的特定術語,您應該將其更改爲ORACLE。但是,如果您使用的是Objects來生成查詢,則應該/應該通過您正在使用的(例如)持久性解決方案「自動地」處理;只需通過更改設置中的數據庫驅動程序。

有關更多詳細信息,我們需要一些適用於MYSQL的代碼示例,而不適用於ORACLE。

讓我知道是否有幫助。

+0

好吧,謝謝@pegas有manies的東西,它不直接在oracle上工作,如:自動增加值,限制,sysdate(),空值等。 –

相關問題