Список объектов Hibernate по отдельным полям подкласса - PullRequest
3 голосов
/ 03 ноября 2011

У меня есть один суперкласс Java - Message - и 3 дочерних класса - Problem, Report, Update.Для каждого из этих 4 классов у меня есть отдельный контроллер (листер), который использует Hibernate для получения объектов из базы данных.Кроме того, каждый из этих контроллеров добавляет некоторые критерии фильтрации (ограничения), специфичные для используемого им класса.ListMessages может добавлять критерии для полей в классе сообщений, ListProblems может добавлять критерии для полей сообщений и специфичных для проблемы полей.Но есть ли способ фильтрации сообщений с использованием полей из дочерних классов?

Например, у сообщения есть содержимое поля, у проблемы есть статус, у отчета есть отказ по причине (все строки).Я могу фильтровать все сообщения по содержанию, проблемы по содержанию и статусу, отчеты по содержанию и отказ по причине.Но есть ли способ фильтрации сообщений по содержанию, статусу и причине отказа?Мне это нужно, потому что я хочу иметь список всех сообщений, но иметь возможность отфильтровывать все сообщения, которые на самом деле являются проблемами со статусом (или отчетами с refusalReason), которые соответствуют шаблону фильтрации.К сожалению, я не могу получать сообщения из базы данных и фильтровать их в коде Java - их необходимо фильтровать на стороне базы данных.

1 Ответ

1 голос
/ 04 ноября 2011

Я не знаю, какой язык запросов вы используете, поэтому я просто отвечу на вопрос в целом. Если вы отправите свой запрос (язык), я посмотрю, смогу ли я обновить вопрос на примере.

То, что вам нужно сделать, это использовать левые внешние объединения, чтобы включить подклассы, и наложить дополнительное ограничение на каждое объединение, чтобы включить желаемую фильтрацию. Это должно оставить вас с нужными сообщениями.

...