2013-12-18 2 views
0
라는 이름의 쿼리를 사용하여 최대 절전 모드에서 현재 데이터베이스 이름을 얻는 방법을

..최대 절전 모드 쿼리

이 같은 그것을 시도,

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 콘솔에서 동일한 쿼리를 실행하면 현재 데이터베이스 이름이 표시됩니다.

+2

당신은 – Gimby

+0

@Gimby이 예는 createNativeQuery() method..thnks .. – Lucky

+0

@Gimby을 시도한 후 작동이 특별한 경우에 createNativeQuery()를 사용하여 U를 할 수 시도 할 수도 있습니다 시도 할 수 있습니다 의견을 답변으로 게시 하시겠습니까? – Lucky

답변

0

이이

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