如何使用命名查询在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/