Как выбрать из таблицы Oracle 11g под названием Пользователь, используя HQL

1

В Oracle, если вы называете таблицу User, вы должны запросить таблицу, помещая кавычки вокруг слова user.

Это не будет работать

select * from User

Это будет работать

select * from "User"

Мой вопрос: как мне запустить Hibernate HQL-запрос в таблице с именем User? Я попытался поставить "вокруг пользователя", избегая кавычек, одинарных кавычек, ничего не работает. HQL не любит эти символы и ошибки. Я googled и искал решение и ничего не нашел.

  • 2
    Совет: не используйте ключевые слова Oracle для имен таблиц или столбцов. Можете ли вы создать хранимую процедуру для возврата курсора на таблицу?
  • 0
    Да, это был момент упрямой уверенности «Я просто быть в состоянии обернуть в кавычки позже!». Создание хранимой процедуры для возврата курсора на таблицу - интересная идея. Могу поспорить, что это сработает, однако мне любопытно, есть ли более простые решения.
Показать ещё 2 комментария
Теги:
hibernate
hql
hibernate-mapping

1 ответ

1
Лучший ответ

Вам нужно избегать имени таблицы в сопоставлении объектов:

@Entity 
@Table(name="'User'")
public class User {
...
}

Когда вы пишете запрос HQL следующим образом:

from User

Hibernate будет генерировать SQL-запрос следующим образом:

select * from "User"
  • 2
    Просто учтите, что в этом случае - при использовании кавычек - «Пользователь» и «ПОЛЬЗОВАТЕЛЬ» - это два разных имени таблицы. Кавычки также усиливают чувствительность к регистру.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню