2016-12-06 5 views
2

Мой пользователь хочет ввести случайный sql для доступа к базам данных, для которых существует ссылка db в Oracle db. Однако это дает исключение с Hibernate. Ниже приведена функция, которая должна проверять, является ли запрос действительным, запустив запрос. Любые рекомендации приветствуются.Использование Hibernate для доступа к таблице Oracle DBLink

Исключение:

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

Вы должны создать SYNONYM для связанной таблицы [email protected]_DB_LINK, то ваш пользователь может представить родной запрос как Select ID,NAME from YYY, не заботясь о таблице реальное местоположение.

 Смежные вопросы

  • Нет связанных вопросов^_^