2016-12-09 4 views
1

다른 테이블과 함께 LEFT OUTER JOIN이 포함 된 쿼리가 JOOQ에 있습니다. 해당 레코드가 존재한다는 보장이 없기 때문에 이것은 의도적입니다.이 경우 이전 테이블에서 값을 검색하고 누락 된 필드에 기본값을 제공하려고합니다.JOOQ는 Record 개체의 null 필드를 확인합니까?

그러나 기본 매개 변수가있는 getValue() 함수가 사용되지 않으므로 필드에 NULL 값이 있는지 확인하려면 어떻게해야합니까?

문자열로는 충분하지만 부울 값은 단순히 false으로 반환됩니다. 즉, 실제로 false로 설정되었는지 확인할 수 없거나 JOOQ이 반환하기로 결정한 것입니다. field() 함수의 반환 값이 null이 같은 필드의 값이 경우에도,

if (record.field(MY_TABLE.SOME_BOOLEAN) != null) { 
    ... 
} 

하지만 작동하지 않습니다

은 내가 시도했습니다. 나는 또한 시도했다

if (record.field(MY_TABLE.SOME_BOOLEAN).isNull()){ 
    ... 
} 

그러나 유효한 자바 조건이 아니다.

미리 감사드립니다.

답변

3

당신이 작동하지 않습니다 노력하고 무엇 :

if (record.field(MY_TABLE.SOME_BOOLEAN) != null) { } 

Record.field()Field 참조를 반환합니다. 귀하의 레코드가 MY_TABLE에서 생성되지 않았을 수도 있지만 여전히 SOME_BOOLEAN 열을 포함 할 수도 있습니다. Record.field()은 해당 레코드에서 SOME_BOOLEAN 열을 반환합니다.

은 무엇 당신이 찾고있는 것은 단순히 :

if (record.get(MY_TABLE.SOME_BOOLEAN) != null) { } 

는 jOOQ가 SOME_BOOLEAN 열이 데이터베이스에 실제로 NULL이었다, 또는 LEFT JOIN 경우 어떤 행을 반환하지 않았습니다 여부를 구별 할 방법이 없다는 점에 유의 마십시오. 이것은 SQL이 작동하는 방법입니다.

if (record.get(MY_TABLE.ID) != null) { } 
: 당신이 당신의 LEFT JOIN 실제로 자식 행을 찾을 수 있는지 여부를 확인하려면, 당신은 기본 키로 NOT NULL 열에서 null 값을 확인할 수 있습니다