Как динамически генерировать SQL-запрос на основе выбора пользователя?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как динамически генерировать SQL-запрос на основе выбора пользователя?

Сообщение Anonymous »

Это тот же вопрос, что и:

Как динамически генерировать SQL-запрос на основе выбора пользователя?

Единственная разница в том, что мне интересно увидеть решения, также использующие Java/JPA (+возможно, специальные расширения EclipseLink или Hibernate).

Мне нужно создать графический интерфейс , с помощью которого пользователи могут выбрать несколько атрибутов, которые будут использоваться для запроса базы данных для поиска подходящих людей. Я ищу идеи, как динамически генерировать запросы к базе данных в соответствии с выбором пользователя.

Запрос будет содержать несколько полей, но чтобы получить представление, я включу только три из них. приведенные ниже в качестве примера:
  • Профессия – может быть от 0 до n строк занятий. Если указаны строки рода занятий, одна из них должна совпадать.
  • Возраст – возраст может быть указан как:
    • точное соответствие (30)
    • диапазон (например, 30–40)
      < li>меньше значения (-40)
    • больше значения (30-)
    < /ul>

    Параметр возраста в запросе является необязательным. Кроме того, пользователь может указать, является ли возраст обязательным параметром. Если это не требуется и в профиле человека нет возраста, возрастной критерий для этого человека игнорируется.
  • Рост – соответствует возрасту
Примеры запросов:

Критерии не указаны:

Код: Выделить всё

select * from persons
Указана только профессия:

Код: Выделить всё

select * from persons where occupation = 'dentist'
Дано несколько профессий:

Код: Выделить всё

select * from persons where (occupation = 'dentist' or occupation = 'engineer')
Возраст указан как большее значение, и он должен присутствовать в профиле человека:

Код: Выделить всё

select * from persons where age >= 30
Рост указан в виде диапазона и не обязательно должен присутствовать в профиле человека:

Код: Выделить всё

select * from persons where (height is null or (height >= 30 and height = 30 and (height is null or (height >= 30 and height 

Подробнее здесь: [url]https://stackoverflow.com/questions/2041312/how-to-dynamically-generate-sql-query-based-on-user-s-selections[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»