2012-08-02 3 views
1

NativeQuery의 결과 매개 변수를받는 방법 : 그래서내가이 쿼리 만들고 싶어

Select 
    srid, 
    substring(srtext 
       from (position('DATUM["' in srtext)+7) 
       for (position('ID["' in srtext)+2) 
       - (position('DATUM["' in srtext)+7)) 
    from spatial_ref_sys 
    order by substring 

을, 나는

Query query = em().createNativeQuery(QUERY) 

는 또한 긴 SRID와이있는 SRID 객체를 생성 생성 String sridText.

그 값을 가져 와서 목록에 넣어야합니다. sridText의 부분 문자열이며 분명히 Long srid로 srid됩니다.

도와주세요!

답변

1

답을 찾았습니다.

public List<SridDTO> listaa(){ 
    int i = 0; 
    List<SridDTO> list = new ArrayList<SridDTO>(); 
    Query query = em().createNativeQuery("Select getSrid()"); 
    String[] vector = (String[]) query.getSingleResult(); 
    while(i<vector.length){ 
     SridDTO sridDTO = new SridDTO(new Long(vector[i]),vector[i+1]); 
     i = i + 2; 
     list.add(sridDTO); 
    } 
    return list; 
} 
: 우선, 난 당신이 내 자바 호출 그래서 반환에 내가 문자열 []에 개체를 캐스팅 [] 텍스트를 가지고시피 getSrid

CREATE OR REPLACE FUNCTION getSRID() returns text[] as $$ 
declare 
resultado text[]; 
consulta cursor for 
Select srid,substring(srtext from (position('DATUM["' in srtext)+7) 
for(position('ID["' in srtext)+2) 
    - (position('DATUM["' in srtext)+7)) as sub 
from spatial_ref_sys; 
cont int; 
i int; 
sridd int; 
srTextt text; 
begin 
open consulta; 
i=1; 
EXECUTE 'SELECT COUNT(*) FROM SPATIAL_REF_SYS' into cont; 
resultado := ARRAY[cont]; 
while(i<cont) loop 
    fetch consulta into sridd,srTextt; 
    resultado[i] := sridd; 
    resultado[i+1] := srTextt; 
    i:=i+2; 
end loop; 
return resultado; 
end 
$$ language plpgsql; 

라는 plpgsql 기능을했다

관련 문제