Я использую репозитории и сущности Spring JPA в приложении. Теперь, в духе этого приложения, мне нужно расширить один из моих объектов, а также предоставить расширенный репозиторий.@ Приоритетный эквивалент для автономных репозиториев Spring JPA
Для всех остальных компонентов мне нужно переопределить/расширить. Я просто создаю новую реализацию и комментирую ее с помощью @Primary, поэтому она будет автоматически открыта вместо стандартной реализации.
Для репозиториев, однако, это не работает. Я могу аннотировать новый репозиторий с помощью @Primary, но он не имеет никакого эффекта (оба компонента найдены и поэтому не могут быть автообновлены). Это имеет смысл, потому что репозиторий является интерфейсом, а не реализацией, реализация осуществляется Spring динамически.
Могу ли я как-то рассказать Spring (через аннотацию в репозитории или через конфигурацию), какой репозиторий использовать? Или мне нужно сделать ручное обходное решение, подобное этому Using @Primary in Spring Data JPA repositories, или я должен придумать своего рода поставщик репозитория вместо autowiring?
Редактировать, чтобы сделать вещи яснее: Скажем, у меня есть сущность A
@Entity
public class A {
@Id
private long id;
}
и его хранилище
public ARepository extends Repository<A, Long> {
}
Теперь я продлить его сущности B
@Entity
public class B extends A {
}
public interface BRepository extends ARepository {
}
Обычно, согласно документации, вы используете хранилища, как это:
@Autowired
private ARepository repository;
Это, однако, не работает, потому что теперь есть два фасоль типа ARepository
. Для бобров, которые я реализую сам, я бы использовал @Primary
в расширяющемся классе, но для репозиториев нет реализации интерфейса во время компиляции.
Почему расширение сущностей и репозитория для этого объекта требует того, что вы описываете во втором абзаце. ... Может быть, абзац 2. должен быть перефразирован - я (и он никого не швыряет) понимает, что вы хотите сделать/что ваша проблема. – Ralph
@Ralph Я добавил несколько примеров кода, чтобы объяснить, что моя проблема.Существует также связанный вопрос, когда я пытаюсь использовать фабрику хранилища вместо обычной автоустановки. –
Теперь я понял. - интересный вопрос. – Ralph