【发布时间】:2015-09-07 18:56:09
【问题描述】:
我正在尝试调用 MS SQL 服务器存储过程。我使用spring-boot,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");
}
【问题讨论】:
标签: java sql-server jpa stored-procedures spring-boot