2015-01-16 60 views
1

我目前調用諸如存儲功能的Postgres數據如下:如何存儲我回來從存儲功能

SQLQuery query = session.createSQLQuery(my_function()) 

這個函數返回一個表:

RETURNS TABLE(
     userid   BIGINT, 
     user_height DOUBLE PRECISION 
    ) 

我怎麼搶兩列並將它們存儲到2個數組列表中?

我想:

List<Object[]> data= query.list(); 
     List<Long> result= newArrayList(); 

     for (Object[] each: data) 
     { 
      Long userId= (Long) point[0]; 
      result.add(userId); 

     } 

我得到了exception: org.hibernate.exception.SQLGrammarException: user lacks privilege or object not found: MY_FUNCTION()

回答

0

CALL存儲過程和結果,映射到一個類的對象如本例:

class UserHeight 
{ 
    public long userid; 
    public double user_height; 
} 

Query query = session.createSQLQuery("CALL my_function()") 
    .addEntity(UserHeight.class); 

List result = query.list(); 
for(int i=0; i<result.size(); i++){ 
    UserHeight height = (UserHeight)result.get(i); 
    System.out.println(height.height); 
} 
+0

嗨gknicker,我試過這個,但得到了未知的實體錯誤。我創建了這兩個領域的類。用@ Entity和@ Table標記它並在數據庫中創建一個表。 – JohnnyGnomez