使用Hibernate访问Oracle DBLink表

时间:2016-12-06 14:18:14

标签: java oracle hibernate dblink

我的用户想要输入随机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;
}

1 个答案:

答案 0 :(得分:3)

您应为链接表格SYNONYM创建YYY@XXX_DB_LINK,然后您的用户就可以提交Select ID,NAME from YYY等原生查询,而无需担心表格真实位置。