>

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() 를 사용하여 단일 행의 결과를 추출 할 수 있습니다 .

    JDBC Connection 얻기   Session 에서 데이터베이스 메타 데이터에서 연결 문자열을 추출합니다. SQL Server의 경우 connection.getMetaData().getURL() 를 구문 분석해야한다고 생각합니다.  실제 데이터베이스 이름을 추출하기 위해.

    Session.connection() 참고  더 이상 사용되지 않는 것으로 간주되며 Session.doWork() 를 사용해야합니다.

  • 답변 # 2

    AFAIK는 그런 방식으로 NAtive 데이터베이스 함수를 호출 할 수 없습니다. 간단한 쿼리 대신 기본 쿼리를 사용해보십시오 : http://www.roseindia.net/hibernate/hibernate-native-sql.shtml

관련 자료

  • 이전 R을 통해 인터넷에서 파일을 다운로드하는 방법
  • 다음 jquery를 사용하여 PHP 파일에 대한 onclick Ajax 호출을 수행하는 방법은 무엇입니까?