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

标签 java sql-server 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. 使用 session.createSQLQuery(...) 创建原生 SQL 查询。您可以使用 uniqueResult() 提取单行结果。

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

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

关于java - 如何获取通过 Hibernate 连接的数据库名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/821466/

相关文章:

sql - 如何在不知道 SQL Server 中的架构的情况下从存储过程填充临时表

sql-server - 为什么我的结果不一致?

sql-server - Hibernate (/JPA) 服务器端分页和 MS SQL Server

Hibernate - Envers -> 属性的审核/版本控制,但仅当值发生更改时

java - 是否有 jpa 或 hibernate 属性使所有查询不区分大小写

java - 无法从 Yahoo IMAP 帐户删除邮件

java - 检查矩阵内的总和并递归地将路径保留在第二个数组上

java - 如何在不知道名称的情况下获取 JSONObject 中的第一个对象?

java - hql 一对多/多对一选择

java - 具有 protected 类的继承