我的用户想要输入随机sql来访问Oracle
db中存在db链接的数据库。但是,这会使Hibernate
出现异常。
下面是一个函数,它应该通过运行查询来检查查询是否有效。
欢迎任何建议。
例外是:
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query 'Select ID,NAME from YYY@XXX_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;
}
答案 0 :(得分:3)
您应为链接表格SYNONYM
创建YYY@XXX_DB_LINK
,然后您的用户就可以提交Select ID,NAME from YYY
等原生查询,而无需担心表格真实位置。