2016-02-15 90 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();