2017-03-17 3 views
1

내가 이런 쿼리가 명령 :체인 및 구성 Jooq가

  1. 위의 행의 값 행을 작성 행을 선택 (더 그 1 개 값이있다).

기술적으로는 하나 개의 SQL 요청에서 표현 가능하지만, 와 jooq 애플리케이션 및 DB 서버 사이의 값 왕복있을 것입니다.

jooq.select(TABLE_A.FIELD_A, TABLE_A.FIELD_B).from(TABLE_A)     
      .where(TABLE_A.ID.eq(id)) 
      .fetchOne().map(r -> 
      jooq.insertInto(AUDIT) 
      .columns(AUDIT.FIELD_A, AUDIT.FIELD_B) 
      .values(r.value1(), r.value2()).execute()) 


select field_a, field_b into @a, @b from TABLE where ID = ?; 
insert into AUDIT (field_a, field_b) values(@a, @b); 

이것은 데모 쿼리입니다. 나는 특정 쿼리에 대한 대안보다는 구성하는 것을 돕는 도구에서 흥미 롭다.

+0

당신이 무슨 뜻인지 조금 설명 할 수 "작성하다"및 "해결 방법"으로 예 : 당신의 제안이 왜 당신에게 흥미롭지 않습니까? 이상적인 솔루션은 어떻게 생겼을까요? –

답변

0

jOOQ는 INSERT .. SELECT을 지원합니다. 당신은 두 개의 문 사이에 클라이언트 왕복을 가지고 있지만 대신 쓰기 안 :

SQL :

insert into AUDIT (FIELD_A, FIELD_B) 
select FIELD_A, FIELD_B from TABLE where ID = ?; 

자바 :

jooq.insertInto(AUDIT, AUDIT.FIELD_A, AUDIT.FIELD_B) 
    .select(DSL.select(TABLE.FIELD_A, TABLE.FIELD_B) 
       .from(TABLE) 
       .where(TABLE.ID.eq(id))) 
    .execute();