2016-02-15 55 views
0

我在数据库中一个过程,当我试图重复这个结果我得到只有一行多times.it不庞廷在循环下一条记录返回一个对象名单,存储过程JPA

这里是我的代码,

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 

任何人都可以建议我

+4

JPA 2.1对存储过程执行的专用API,这样你就不会劈“原生查询”方法。也许你应该试试 –

+0

调用jpa存储过程的任何示例代码 –

+1

为什么你不使用互联网搜索JPA2.1文档? –

回答

0

你不需要/有因为JPA 2.1现在支持他们从“createNativeQuery”的方法调用存储过程。看看下面的代码:

存储prodcedure(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();