2009-05-04 80 views
2

我想獲取我連接到SQL Server的數據庫的名稱。我試着這樣做:如何獲取我通過Hibernate連接的數據庫名稱?

Query query = session.createQuery("SELECT db_name()"); 
List<String> dbNames = query.list(); 

但是,我得到了以下錯誤:

[ERROR PARSER:35] *** ERROR: <AST>:0:0: unexpected end of subtree 
Exception in thread "main" java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.MethodNode 
\-[METHOD_CALL] MethodNode: '(' 
    +-[METHOD_NAME] IdentNode: 'db_name' {originalText=db_name} 
    \-[EXPR_LIST] SqlNode: 'exprList' 

我怎樣才能得到我連接到數據庫的名稱?

回答

6

您可以:

  1. 創建一個本地的SQL查詢,與session.createSQLQuery(...)。您可以使用uniqueResult()提取單行結果。

  2. Session獲取JDBC Connection,並從數據庫元數據中提取連接字符串。對於SQL Server,我相信您需要解析connection.getMetaData().getURL()以提取實際的數據庫名稱。

注意Session.connection()被視爲過時,你應該使用Session.doWork()

+0

謝謝!我甚至沒有考慮使用Session對象的Connection。 – Ascalonian 2009-05-05 11:25:01

相關問題