2013-12-18 124 views
0

如何使用命名查詢來獲取在休眠當前數據庫的名字..在Hibernate查詢

我試了一下這個樣子,

String q1 = "select database()"; 
Query query1 = em.createQuery(q1); 
String dbName = (String)query1.getResultList().get(0); 
System.out.println("database name: "+dbName); 

獲取數據庫名但這拋出這樣的錯誤,

HTTP ERROR 500 

Problem accessing /admin/user. Reason: 

    No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode 
\-[METHOD_CALL] MethodNode: '(' 
    +-[METHOD_NAME] IdentNode: 'database' {originalText=database} 
    \-[EXPR_LIST] SqlNode: 'exprList' 

Caused by: 

java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode 
\-[METHOD_CALL] MethodNode: '(' 
    +-[METHOD_NAME] IdentNode: 'database' {originalText=database} 
    \-[EXPR_LIST] SqlNode: 'exprList' 

但是,如果我在Sql GUI控制檯中運行相同的查詢,它將顯示當前的數據庫名稱。

+2

你可能想在這個特殊的情況下 – Gimby

+0

@Gimby是它嘗試createNativeQuery()method..thnks .. – Lucky

+0

@Gimby後使用作品createNativeQuery()來嘗試u能發表您的評論作爲答案? – Lucky

回答

0

你可以試試這個

sessionFactory.getSettings().getConnectionProvider().getConnection().getMetaData().getURL();