jOOQ에서 래핑 된 별칭 유형을 확인할 수 있습니까? field.getWrapped() instanceof AggregateFunction
과 같은 것입니다.jOOQ의 FieldAlias 내부 유형 확인
또한 FieldAlias
클래스는 공개되지 않으므로 field instanceof FieldAlias
을 확인할 수도 없습니다. 이 수업을 공개하지 않을 동기는 무엇입니까?
jOOQ에서 래핑 된 별칭 유형을 확인할 수 있습니까? field.getWrapped() instanceof AggregateFunction
과 같은 것입니다.jOOQ의 FieldAlias 내부 유형 확인
또한 FieldAlias
클래스는 공개되지 않으므로 field instanceof FieldAlias
을 확인할 수도 없습니다. 이 수업을 공개하지 않을 동기는 무엇입니까?
포장 된 유형의 별칭 필드를 jOOQ에서 확인할 수 있습니까? Field.getWrapped() instanceof AggregateFunction과 같은 것입니다.
앨리어싱 때문에, 단지 QueryPart
유형의 모든 내부 API입니다 jOOQ 함께 할 다른 표현처럼, 공공 jOOQ API를 통해 필드의 별칭을 잡아하실 수 없습니다.
이 체크 이런 종류의 우선 순위가 낮은 보류 기능 요청입니다 : https://github.com/jOOQ/jOOQ/issues/2579이
요청 기능은 아직 잘 설계된 기능을 설명하지 않습니다, 그래서 나는 현재는 API에 추가됩니다 확신 아니에요 곧.
VisitListener
SPI를 구현하면이 제한을 피할 수 있습니다.이 SPI를 사용하면 SQL 렌더링 논리에서 방문한 각 QueryPart
에 대해 호출되는 콜백을 구현할 수 있습니다. 스택 머신 similar to the one described in this article을 사용하면 앨리어싱 표현식에 포함 된 표현식을 확인할 수 있습니다. VisitListener
은 트리거 될 수 있습니다. DSLContext.render(QueryPart)
으로 전화하십시오.
실제로 SQL 문자열을 렌더링하거나 바인드 변수를 수집 할 필요없이 VisitListener
SPI를 트리거 할 수 있다는 것은 흥미로운 일입니다. 이 기능 요청을 만들었습니다 : https://github.com/jOOQ/jOOQ/issues/6735 어떤 경우이든, 실제 사용 사례에 약간 과용 될 수 있습니다. 불행히도 귀하의 질문에서 아직 모르겠습니다.
이 클래스를 공개하지 않기위한 동기는 무엇입니까?
단순 : 내부 API입니다. 패치 릴리즈를 포함하여 누구든지 내부 API에 액세스해야하는 이유는 없습니다.
jOOQ user group에서 jOOQ 내부가 개인 패키지이거나 final
인 경우 소수의 불만 사항이 있습니다. 불만 사항은 주로 귀하가 제안한 instanceof
수표와 같은 단기적인 목표에 의해 동기가 부여되었습니다. 대부분의 경우 기능 요청의 진정한 동기 부여에 대해 논의하는 것이 좋습니다.이 기능은 재정의를 위해 내부 API를 약간만 개방 할 수있는 가능성을 논의하기보다는 모든 사람이 사용할 수있는 멋진 새로운 기능으로 변환 될 수 있습니다. 이런 종류의 재정의는 원래 소스 코드를 패치하고 포크 자체를 구축하는 것과 비슷합니다. 단기간에 효과가있을 수 있지만 커뮤니티와 도서관 자체에 대해서는 일반적으로 가치를 추가하지 않으면 서 하위 호환성 관점에서 유지 관리 압력을 높이기 때문에 좋은 해결책은 아닙니다.
그런 의미에서 패키지 내부를 비공개로 만들어 라이브러리 내부를 닫는 것이 좋습니다. 마찬가지로, Java 8의 Stream
구현 클래스에 액세스 할 수 없기 때문에 이러한 액세스 권한이 없어야합니다.여기 API 설계 동기 부여에 대한
자세한 내용 : https://blog.jooq.org/2017/03/20/the-open-closed-principle-is-often-not-what-you-think-it-is/
당신은 분명히 매우 구체적인 무언가를 위해 애 쓰고 있습니다. 이제 당신은 당신이 염두에두고있는 특정 솔루션 경로를 따라 가지 못하게하는 것에 대해 질문합니다. 그러나 나는 훨씬 더 흥미로운 질문은 당신이 해결하려고하는 원래의 문제에 관한 것이 될 것이라고 생각합니다. 확실히, 원래의 문제에 대한 가능한 다른 해결책은'instanceof' 검사를하는 것보다 많습니다. –
@ Lukas 물론 원래의 문제에 대한 해결 방법과 다른 해결책이 있습니다. jOOQ를 사용하다 보니 몇 가지 조건을 기반으로 요소에서 쿼리를 작성하는 것과 같이 실행 중 수정에 실제로는 적합하지 않다고 언급했거나 쿼리에서 조건을 검사 할 때 쿼리를 수정하는 것과 같이 그 자체. 좀 더 개인적인 대화를 통해 세부 사항을 추가 할 수있었습니다. 그러나 여전히 나는 설명 된 제한에 대한 동기에 관심이 있습니다. – Scadge
좋아, 나는 동기 부여에 관한 부분에 대답했다. API에 대한 불만 사항이 on-the-fly 수정에 적합하지 않을 때마다 언제나 같은 대답입니다. 토론을 표면화합니다. 그리고 저는 여러분이 달성하고자하는 것이 'instanceof' 검사를하는 것보다 더 깔끔한 방법, 2) 실제 * 기능 요청은 jOOQ 내부에 대한 토론보다 훨씬 흥미 롭습니다. 다음은 사용자 그룹에 세부적인 문제 설명을 보내주십시오. https://groups.google.com/d/forum/jooq-user –