如何获取通过Hibernate连接到的数据库名称?

我正在尝试获取在SQL Server中连接到的数据库的名称。我试着做:

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'

如何获得我连接的数据库的名称?

回答:

您可以:

  1. 使用创建一个本地SQL查询session.createSQLQuery(...)。您可以使用提取一行结果uniqueResult()

  2. Connection从中获取JDBC Session,然后从数据库元数据中提取连接字符串。对于SQL Server,我相信您需要解析connection.getMetaData().getURL()才能提取实际的数据库名称。

请注意,它Session.connection()已被弃用,您应该使用Session.doWork()

以上是 如何获取通过Hibernate连接到的数据库名称? 的全部内容, 来源链接: utcz.com/qa/407572.html

回到顶部