使用 Hibernate 访问 Oracle DBLink'ed 表



我的用户想输入随机SQL以访问 Oracle 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;
}

您应该为链接表YYY@XXX_DB_LINK创建一个SYNONYM,然后您的用户可以提交像Select ID,NAME from YYY这样的本机查询,而不必担心表真实位置。

最新更新