2017-02-10 2 views
2

У меня есть много столбцов в моей БД и я не хочу писать собственные запросы для всех, поэтому рассмотрим приведенный ниже метод для каждого динамического имени столбца, который я даю как column_name. Что-то вроде этого возможно или есть ли другой способ сделать это?Как добавить собственное имя столбца Spring Data JPA?

 @Query("select #column_name from Item Where #column_name like %?2% ") 
     List<Item> getUniqueColumn(String column_name,String column_text); 

Кстати, весной документация в этом случае не упоминается.

+0

Непонятно, что вы хотите ... Пожалуйста, добавьте данные – nhouser9

+0

Я отредактировал мой вопрос; У меня много столбцов в моей БД и я не хочу писать собственные запросы для всех, поэтому рассмотрим вышеприведенный метод для каждого динамического имени столбца, возможно ли это? –

+0

использовать Eclipse для автоматического создания ваших сущностей для вас –

ответ

1

Вы можете передавать только те значения, которые вы ожидаете в качестве параметров для своих запросов HQL. Вы не можете передавать имена столбцов или таблиц.

Hibernate в основном работает здесь с PreparedStatement, и инструкция не может быть подготовлена ​​там, где запрашиваемая таблица/столбцы пока не известны.

Вы должны написать некоторую строку замены логики или построить запрос с Criteria API

List<Object> getUniqueColumn(String column_name,String column_text){ 
     StringBuilder query = new StringBuilder(); 
     query.append("select #column_name "); 
     query.append("from Item "); 
     query.append("where #column_name like %?1%"); 

     query = query.toString("#column_name", column_name); 

     session.createQuery(query).setString(1, column_text).list(); 
} 

Кроме того, помните, что вы делаете здесь является проекцией, и вы не получите список Предмет, но Список объектов.

+0

Используя спецификации весенних данных, можно 'pass' имена столбцов в качестве аргументов. Я размещаю здесь пример, https://stackoverflow.com/questions/47407043/spring-data-jpa-pass-column-name-and-value-as-parameters/48492077#48492077 –

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