Скрытый и статический фильтр для всех методов хранилища для сущности - PullRequest
0 голосов
/ 05 апреля 2019

Отказ от ответственности : Пожалуйста, не предлагайте модернизацию модели базы данных / недостатки концепции модели базы данных. Этот вопрос касается описанного случая, нет способа изменить это дело по отдельности.


Предполагая, что у меня есть таблица fruits, с name, color и type в качестве полей Это означает, что все яблоки имеют type=apple, все апельсины имеют type=orange и т. Д.

Теперь создаем сущность / модель JPA с именем Apple с этими 3 сопоставленными полями и Table=fruits, я хочу создать AppleRepository, где аргумент type статически установлен на apple и не виден для внешние потребители.

Так что я не хочу предложить

AppleRepository.findByTypeAndNameContains с требованием, чтобы вызывающий абонент сейчас установил type в apple

а точнее просто

AppleRepository.findByNameContains, в то время как тип статически установлен на apple.

(С помощью того же метода я бы выбрал Orange и OrangeRepository, используя type=orange)

Я понимаю, что мог бы использовать @Query, чтобы написать собственный запрос, в котором тип просто статически включен и отображает только динамические параметры ... но

Вопрос: Есть ли элегантный способ реализовать это без использования @Query?

1 Ответ

2 голосов
/ 05 апреля 2019

То, что у вас есть - это принцип, лежащий в основе стратегии наследования «одного стола».Он заключается в хранении всех объектов в иерархии внутри одной таблицы и различении их с помощью столбца дискриминатора (т. Е. Столбца типа).

Подробнее см. в документации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...