Я разрешаю системе создавать запросы по именам методов:
public interface CompanyRepository extends JpaRepository<Company, Long> {
Boolean existsByName(String name);
Boolean existsByRegCode(String regCode);
}
Существует несколько разных репозиториев для разных сущностей (Компания, Пользователь, Магазин), и все они имеют поле CountryId.
Теперь мне нужно добавить условие «AND CountryId =: CountryId» ко всем запросам во всех репозиториях, где параметр страны получает свое значение из некоторого файла конфигурации.
Я знаю, что мне нужно создать какой-то базовый класс для этого и расширить его, но не могу понять, что добавить в этот класс.
Страна - это просто поле в таблице компании. Я обновляю свой вопрос
тогда это строка? Если я правильно понял ваш вопрос, вы можете попробовать: Boolean existsByNameAndCountry(String name, String country)
Предполагая, что вы используете спящий режим, вы можете использовать фильтры, которые будут применяться автоматически.
Вы можете определить суперкласс для всех своих сущностей и добавить поле countryId к этому суперклассу и аннотировать с помощью @Where(clause = "countryId='id'").
@Where(clause = "countryId='id'")
public class Entity {...}
а также
public class Company extends Entity {...}
К сожалению, это допускает только статические значения: «Проблема с аннотацией @Where в том, что она позволяет нам указывать только статический запрос без параметров, и его нельзя отключить или включить по запросу».
Ты прав. В случае использования спящего режима другим способом, который позволяет нам динамически изменять параметры, является AOP, который перехватывает запросы и включает / отключает фильтры на основе методов или классов: cyriltech.blogspot.com/2017/03/…
есть ли связь у юридического лица компании с юридическим лицом страны?