2009-05-04 6 views
2

Ich versuche, den Namen der Datenbank zu erhalten, mit der ich in SQL Server verbunden bin. Ich habe versucht zu tun:Wie kann ich den Datenbanknamen erhalten, mit dem ich über Hibernate verbunden bin?

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

jedoch bekam ich folgende Fehlermeldung:

[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' 

Wie kann ich den Namen der Datenbank erreiche ich verbunden bin?

Antwort

6

Sie können entweder:

  1. erstellen nativen SQL-Abfrage, mit session.createSQLQuery(...). Sie können eine einzelne Reihe von Ergebnissen mit uniqueResult() extrahieren.

  2. Erhalten Sie eine JDBC Connection von der Session, und extrahieren Sie die Verbindungszeichenfolge aus den Metadaten der Datenbank. Für SQL Server glaube ich, dass Sie connection.getMetaData().getURL() analysieren müssen, um den tatsächlichen Datenbanknamen zu extrahieren.

Beachten Sie, dass Session.connection() veraltet betrachtet wird, und Sie sollen Session.doWork() verwenden.

+0

Vielen Dank! Ich habe nicht einmal darüber nachgedacht, das Connection vom Session-Objekt zu verwenden. – Ascalonian

Verwandte Themen