2012-01-05 9 views
4

私は、既存のプロジェクトをOracleからMSSQLに移植することに責任がありますが、両方とも機能しています。 レガシープロジェクトはHibernate 3.xを使用しますが、洗練されたネイティブクエリをいくつか含んでいます。 私はどの方言を使用したのか知りたいです。hibernateを使用してSQLダイアレクトを解決する

答えて

5

最後に私は方法を見つけましたが、それはHibernateに特有のものです。

+0

@Dewfyありがとう、それは私にはあまり役立ちます – danisupr4

0

ここでは、Hibernateに固有の別の解決策があります。それはキャストをダウン含むのでそれは、まだ醜いだが、それは、リフレクションを使用していません:

Session session = (Session) entityManager.getDelegate(); 
SessionFactoryImplementor sessionFactory = (SessionFactoryImplementor) session.getSessionFactory(); 
Dialect dialect = sessionFactory.getDialect(); 
if (dialect.toString().contains("Oracle")) { ... } 
2

別の少し短い方法:

private @Autowired SessionFactory sessionFactory; 

public Dialect getDialecT(){ 
    SessionFactoryImplementor sessionFactoryImpl = (SessionFactoryImplementor) sessionFactory;  
    return sessionFactoryImpl.getDialect();  
} 
関連する問題