2011-03-14 5 views
4

Heya, 최대 절전 모드입니다. 정말 SQL 쿼리를 위해 모든 것을 단순화한다고해야합니다. 그러나 반환 된 결과를 조작하는 것은 지금 당장 두통 거리가됩니다.목록 대신 결과 집합으로 최대 절전 모드 쿼리 결과 가져 오기

결과가 list로 반환됩니다. 대부분의 경우 결과 집합에 결과를 포함 시키므로 결과 집합을 사용하는 것처럼 쉽게 조작 할 수 있으므로 열 이름이나 인덱스로 값을 지정할 수 있습니다. 목록에서, 나는 꽤 많이 자신의 noobity 소유하고 있습니다.

일부 목록에서는 목록을 JSF 데이터 테이블로 가져온 다음 멤버를 직접 호출 할 수 있습니다. 나는 항상 이것을 할 수는 없다. 왜 나 한테 묻지 마. @. 회전하는 머리.

최대 절전 모드 목록 대신 결과 집합을 가져 오는 방법이 있습니까?

+3

당신은 Hibernate가 엔티티 목록 대신에'ResultSet'을 리턴하기를 원합니 까? 그렇다면 왜 Hibernate가 전혀 필요하지 않습니까? – axtavt

+2

'ResultSet'이'List '보다 나은 이유를 적어도 하나의 예를 보여주십시오. 나는 어느 누구도 상상할 수 없다. – BalusC

+3

BalusC, 나는 ResultSet이 List보다 낫다는 말을 결코하지 않습니다. 나는 최대 절전 모드가 이유가 있다는 것을 알고있다. 난 그냥 열 이름에 따라 목록을 구문 분석 할 것, 예를 들어 ResultSet에서 할 수있는 resultSet.getString (index) 또는 resultSet.getString (columnName). 목록에서 분명히 나는 ​​그렇게 할 수 없다. 내가 할 수있는 일이 있니? –

답변

2

좋아, 어쨌든 나는 그것을 잘 만들 수 있었다! 나 너무 행복해! Hibernate 질의에 의해 반환 된 목록을 조작하는 방법을 찾기 위해 노력하는 사람들을 위해 , 기본적으로 내가 한 일은이었다 ..

//previous code 
list = (List<MappedClass>)query.list(); 

가 거기에서 목록이 맵 클래스 포함하며 이후에 사용하는 반복자에 의해 액세스 할 수 있습니다 getter를 사용하여 값을 검색하십시오. 예

//previous code 
for (int i =0; i<list.size(); i ++) { 
    String name; 
    String id; 
    name = list.get(i).getName(); 
    id = list.get(i).getId(); 

    //add your data manipulation here 
} 

희망이 있습니다.

+0

아, 그게 실제 문제입니까? 앞으로는 더 많은주의를 기울여 질문하십시오. 예 : "Java에서 객체의'List'를 반복하는 방법은 무엇입니까? 해결 방법 및/또는 다른/잘못된 솔루션을 얻는 방법을 묻는 대신 그런데 더 나은 방법으로 클리닝 할 수 있지만, 운동으로 남겨 두겠습니다. :) – BalusC

+0

어딨어? 나에게 알려줄 수있어? 제 질문이 커뮤니티에서 이해할 수 없거나 원어민이 아닌 경우 미안합니다. –

3

약간 오래된 쓰레드하지만 난 저항 할 수없는 : 당신은 거대한 데이터베이스를 가지고 있고 목록이 메모리에 결과 맞지 않는 경우

// Code for iterating over a list of objects 
    for(MappedClass mappedCless : list){ 
     String name = mappedClass.getName(); 
     String id = mappedClass.getId(); 
     // further logic 
    } 
+0

감사합니다. 나는 이것을 사용할 수있다! –

0

당신이 필요할 수 있습니다. 목록() 대신 scroll()을 사용하십시오 :

Query query = session.createQuery(query); 
query.setReadOnly(true); 
setFetchSize(Integer.MIN_VALUE); //MUST use Integer.MIN_VALUE, other value=fetch all 
ScrollableResults results = query.scroll(ScrollMode.FORWARD_ONLY); 
// iterate over results 
while (results.next()) { 
    Object row = results.get(); 
} 
results.close();