2016-12-06 52 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,而无需担心关于表格的真实位置。