【问题标题】:Use Hibernate to access an Oracle DBLink'ed table使用 Hibernate 访问 Oracle DBLink 的表
【发布时间】:2016-12-06 14:18:13
【问题描述】:

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

【问题讨论】:

标签: java oracle hibernate dblink


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多