как я могу получить экземпляр jpa-репозитория из класса весной 2.2.4.RELEASE - PullRequest
1 голос
/ 16 февраля 2020

Мне нужно получить указанный c экземпляр jpa-репозитория из класса сущностей для вызова findAll, findOne e cc ...

Entity entity = getRepository(EntityClass).findOne(uriParamValue);

В предыдущей версии весны (1.5.X ) я делал это так:

public JpaRepository<Entity, Serializable> getRepository(Class<?> javaClass) {
    return (JpaRepository<Entity, Serializable>) repositories.getRepositoryFor(javaClass);
}

, но весной 2.2.X интерфейсы класса репозитория были изменены с:

public Object getRepositoryFor(Class<?> domainClass) {

на:

public Optional<Object> getRepositoryFor(Class<?> domainClass) {

и я не могу привести «Optional getRepositoryFor (X)» к экземпляру JpaRepository, чтобы можно было вызывать методы JpaRepository.

Где я делаю неправильно?

спасибо

1 Ответ

0 голосов
/ 16 февраля 2020

Я не знаком с методом getRepositoryFor, но Необязательно - это стандартный Java класс, внедренный в Java SE 8. Вы можете проверить, присутствует ли значение и получить фактическое значение из необязательного, если оно присутствует. Вот пример использования или ElseThrow , но есть и другие варианты. Оформить заказ Javado c.

public JpaRepository<Entity, Serializable> getRepository(Class<?> javaClass) {
    return (JpaRepository<Entity, Serializable>) repositories.getRepositoryFor(javaClass)
           .orElseThrow(() -> new MyException());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...