2017-10-19 4 views
1

그래서 난과 같이 DSLContext를 사용하여 POJO로 lazyly 일부 레코드를 가져 싶습니다JOOQ fetchLazy POJO로

public Iterator<Something> getSomething(DSLContext dsl) { 
    return dsl.selectDistinct(STUFF.FIELD) 
    .from(STUFF) 
    .fetchLazyInto(Something.class) 
    .iterator(); 
} 

문제는 그런 fetchLazyInto()이 없다는 것을 내가 fetchLazy().into(Something.class)

그런 짓을하지 못할

그래서 POJO에 게으른 페칭을 할 수 있습니까? 차라리이 RecordMapper

나는 확실히 다음을 수행 할 수있는 코딩을 피할 것 그러나 그것은 잘못된 느낌 :

dsl.selectDistinct(STUFF.FIELD) 
    .from(STUFF) 
    .fetchLazy() 
    .stream() 
    .map(Something::new) //now Something constructor is ugly 
    .iterator(); 

감사합니다! IteratorAutoCloseable를 확장하지 않고 같은, 당신이 매달려 자원을합니다 (Cursor의이 JDBC ResultSet의 기초가있을 수 있습니다 않습니다

dsl.selectDistinct(STUFF.FIELD) 
    .from(STUFF) 
    .fetchLazy() 
    .stream() 
    .map(r -> r.into(Something.class)) 
    .iterator(); 

을하지만 :

답변

1

이 다음 전용으로 jOOQ API를 사용하여 수행 할 수있다), 결과 처리를 중지 할 때 조기에 닫히지 않습니다. 오류없이 처리를 완료하거나 ResultSet가 가비지 수집 될 때만 닫힙니다.