Я пишу специальную реализацию для репозитория данных JPA Spring. Поэтому у меня есть:
-
MyEntityRepositoryCustom= > интерфейс с настраиваемыми методами -
MyEntityRepositoryUmpl= > реализация указанного интерфейса -
MyEntityRepository= > стандартный интерфейс, который расширяетJpaRepositoryиMyEntityRepositoryCustom
Моя проблема заключается в следующем: в реализации MyEntityRepositoryUmpl мне нужно получить доступ к диспетчеру сущности, который был введен в Spring Data. Как его получить?
Я могу использовать @PersistenceContext, чтобы получить его автоматически, но проблема заключается в том, что этот репозиторий должен работать в приложении, которое устанавливает несколько единиц устойчивости. Итак, чтобы сообщить Spring, какой мне нужен, мне пришлось бы использовать @PersistenceContext(unitName="myUnit"). Тем не менее, поскольку мои репозитории определены в многоразовом слое службы, я не могу знать, в какой точке будет имя единицы сохранения, которое будет настраиваться уровнем приложения более высокого уровня для ввода в мои репозитории.
Другими словами, мне нужно будет обратиться к диспетчеру сущности, который использует Spring Data, но после (не так быстро) взглянуть на документацию Spring Data JPA, я ничего не смог найти для этого.
Честно говоря, тот факт, что классы Impl полностью не знают о Spring Data, хотя описывается как сила в руководстве по Spring Data, на самом деле является сложностью, когда вам нужно получить доступ к тому, что обычно предоставляется Spring Данные сами в вашей пользовательской реализации (почти всегда, я бы сказал...).