我正在尝试获取我在 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'
如何获取我所连接的数据库的名称?
最佳答案
您可以:
使用
session.createSQLQuery(...)
创建原生 SQL 查询。您可以使用uniqueResult()
提取单行结果。从
Session
中获取一个JDBCConnection
,并从数据库元数据中提取连接字符串。对于 SQL Server,我相信您需要解析connection.getMetaData().getURL()
以提取实际的数据库名称。
请注意,Session.connection()
已被弃用,您应该使用 Session.doWork()
。
关于java - 如何获取通过 Hibernate 连接的数据库名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/821466/