Я пытаюсь вызвать хранимую процедуру сервера MS SQL. Я использую пружинную загрузку, JPA 2.1, спящий режим.Вызов хранимой процедуры SQL-сервера с аннотациями JPA 2.1
В базе данных есть таблица с isbn, названием, автором, описанием и хранимой процедурой, которую я пытаюсь вызвать, принимает один из параметров (isbn) в качестве строки и возвращает только заголовок.
Я получаю следующее сообщение об ошибке:
org.hibernate.procedure.ParameterStrategyException:
Attempt to access positional parameter [2] but ProcedureCall using named parameters
Каждый получил решение для этого или узнать, что означает ошибка? Я также пробовал другие комбинации аннотаций.
Book.java
@Entity
@NamedStoredProcedureQuery(
name = "bookList",
resultClasses=Book.class,
procedureName = "dbo.list_books",
parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, name = "isbn", type = String.class)
})
public class Book {
@Id
private String title;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
BookRepository.java
@Repository
public interface BookRepository extends CrudRepository<Book, Long> {
@Procedure
Iterable<Book> list_books(String arg);
}
BookService.java
@RestController
@RequestMapping(value = "/books", produces = MediaType.APPLICATION_JSON_VALUE)
public class BookService {
@Autowired
protected BookRepository bookRepository;
@RequestMapping
public Iterable<Book> books(){
return bookRepository.getBooks("1111111");
}