ну поиск нескольких объектов это какаято шляпа обычно Ибо за одну операцию не более одного аггрегата надо менять а иначе вам всех их лочить придется такая себе идея
ну вы их для чего то достаете наверно чтобы в бизнес логике задействовать в итоге между временем когда достали + применили в бизнес логике они уже могут устареть и все пойдет по одному месту
это обычно "на чтение" и "на чтение" сущности не нужны и в целом это не входит в зону ответственности репозитория.
Сначала ты ищешь несколько айтемов по имени например. Потом там происходят джойны. Потом подзапросы. И почему-то это все еще называется условный UserRepository. Хотя он явно выборки делает на основе данных о которых знать не должен
это получается, что в момент получения из репозитория - нужно делать блокировку в БД и затем иметь в репозитории метод, который эту блокировку снимает, либо при сохранении её убирать?