java - 在hibernate查询中获取数据库名称

标签 java mysql hibernate

如何使用命名查询在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 控制台中运行相同的查询,它会显示当前数据库名称。

最佳答案

你可以试试这个

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

关于java - 在hibernate查询中获取数据库名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20653880/

相关文章:

java - Spring MVC 中的 Hibernate @Valid 奇怪行为

hibernate - Spring Security 提供的记住我功能

java - @Validated 注解无效

java - 是否有一个库函数可以为我提供变量中的当前日期并查找自给定日期以来经过的天数

java - 是否可以从 persistence.xml 共享配置?

php - 使用 HTML/PHP 创建了一个插入论坛,但在添加一定量的内容时出现错误

php - MySQL插入语句不会插入?

java - 读取另一个 Android 应用程序的共享首选项

java - ServiceTracker 与 BundleTracker

mysql - 从多个表中获取记录并将行转换为列 mysql