Вызываемый оператор с JpaRepository

#java #spring #stored-procedures #spring-data-jpa #jpql

#java #весна #хранимые процедуры #spring-data-jpa #jpql

Вопрос:

Теперь я создал хранимую процедуру ‘BookingDeletion’, я вызываю эту процедуру, используя CallableStatement следующим образом:

 if (addBooking == null) {
    addBooking = "CALL BookingDeletion(?, ?, ?, ?)";
}
  

Теперь, если я хочу использовать JpaRepository и применить его методы к этой процедуре, как я могу это сделать?
В процедуре огромное количество операций, поэтому я не могу выполнять все операции отдельно через jparepository.

Комментарии:

1. есть предложения???

Ответ №1:

Вы можете использовать @Query аннотацию с nativeQuery равным true .

Итак, вам просто нужно объявить метод, подобный приведенному ниже, в вашем интерфейсе репозитория.

 @Query(value = "{CALL BookingDeletion(?1, ?2, ?3, ?4)}", nativeQuery = true)
public void bookingDeletion(Object p1, Object p2, Object p3, Object p4);
  

Комментарии:

1. Могу ли я объявить этот метод в своем классе реализации сервиса?

2. Репозиторий был автоматически подключен к нему

3. Нет, он должен быть в вашем интерфейсе репозитория, который расширяет JpaRepository

4. Выше приведен альтернативный уровень абстракции для замены CallableStatement.

5. Внедрите EntityManager в свой сервис и используйте docs.oracle.com/javaee/6/api/javax/persistence /…