2016-12-06 18 views
2

我的用戶想要輸入隨機sql以訪問db鏈接中存在db鏈接的數據庫。但是,這與Hibernate有例外。 下面是一個函數,它應該通過運行查詢來檢查查詢是否有效。 歡迎任何推薦。使用Hibernate訪問Oracle DB連接的表

唯一的例外是:

javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query 'Select ID,NAME from [email protected]_DB_LINK' 

下面是代碼:

public String testSQL(String sqlQuery) { 
    if(!checkAllowedSQL(sqlQuery)) { 
     logger.debug("Forbidden SQL Query detected: " + sqlQuery); 
     return "Forbidden SQL Query detected '" + sqlQuery + "'"; 
    } 


try { 
    Query query = entityManager.createNativeQuery(sqlQuery); 
     List<Object[]> list = query.getResultList(); 
    } catch(Exception e) { 
     return e.toString() + " '" + sqlQuery + "'"; 
    } 

    return null; 
} 
+2

不錯的問題,但我想是一樣的這一個http://stackoverflow.com/questions/22017108/hibernate-with-oracle-dblink-implementation – Acewin

回答

3

你應該爲你的鏈接表[email protected]_DB_LINK創建SYNONYM,那麼你的用戶可以提交一個本地查詢像Select ID,NAME from YYY,而無需擔心關於表格的真實位置。