我在数据库中有一个过程,当我尝试迭代该结果时,它会返回对象列表,我多次只获得一行。它不会在循环中调用下一个记录,
这是我的代码,
Query nativeQuery = entityManager.createNativeQuery("call getdata(?, ?, ?, ?)", Detail.class);
List<Detail> paymentAnalysisDetails=nativeQuery.getResultList();
for( Detail Details : paymentAnalysisDetails) {
System.out.println(Details.getStart_date());
}
我得到输出::
start_date end_date total_no_of_txns
2015-01-01 2015-01-30 10
2015-01-01 2015-01-30 10
但在mysql输出中执行相同的过程
start_date end_date total_no_of_txns
2015-01-01 2015-01-30 10
2015-02-01 2015-02-30 200
任何人都可以建议我
答案 0 :(得分:0)
您不需要/必须从'createNativeQuery'方法调用存储过程,因为JPA 2.1现在支持它们。请查看以下代码:
存储产品(MySQL):
DELIMITER $$
CREATE PROCEDURE sp_getUsers(inputAge INT)
BEGIN
SELECT u.* FROM usertable u WHERE u.age >= inputAge;
END;
$$
JPA致电:
int age = 10;
StoredProcedureQuery query = em.createStoredProcedureQuery("sp_getUsers", Usertable.class)
.registerStoredProcedureParameter("inputAge", Integer.class, ParameterMode.IN)
.setParameter("inputAge", age);
List<Usertable> userList = query.getResultList();