2013-09-21 1 views
2

SQL Server 2008 R2를 사용하면서 jOOQ v2.6을 사용하고 있으며 jOOQ v3.1에 버그가 발생하여 코드 생성이 실패합니다. (저는 이것이 v3.2에서 수정 될 것이라는 것을 알고 있습니다). 수동에서UpdatableRecords에 대한 jOOQ의 예외 처리 무시

:

// Create a new record 
BookRecord book1 = create.newRecord(BOOK); 

// Insert the record: INSERT INTO BOOK (TITLE) VALUES ('1984'); 
book1.setTitle("1984"); 
book1.store(); 

저장소() 실패하는 경우가하는 DataAccessException과가 발생합니다. 제 경우에는 CRUD 작업이 작동 할 때까지 프로세스를 잠깐 들려 주거나 문제를 관찰하고 개입합니다. 즉, BookRecord.store()의 모든 인스턴스를 try/catch로 래핑해야합니다. 이것은 모든 UpdatableRecords에서 모든 CRUD 작업에 적용됩니다.

동일한 예외 처리기를 반복해서 구현하는 것을 기억하지 않고 생성 된 모든 레코드 유형에 대해 모든 CRUD DataAccessExceptions을 처리 할 수있는 간단한 방법이 있습니까?

+0

코드 생성이 v3.1에서 실제로 실패합니까? [this of (this)] (https://groups.google.com/forum/#!topic/jooq-user/eEOgoCJf0xU)를 읽는다면 문제는 단순한 화장품 일 것이라고 생각합니까? –

+0

나는 그 질문에 대한 대답을 지금 그대로 전해주었습니다. 나는보다 정교한 토론이 [jOOQ User Group] (https://groups.google.com/forum/#!forum/jooq-user)에 더 적합하다고 생각합니다. 흥미로운 아이디어, 어쨌든! –

+0

@LukasEder memeory에서 호출 -'SQLServerDatabase.is2012()'가 true를 반환했습니다. [# 2624] (https://github.com/jOOQ/jOOQ/issues/2624) 수정되었습니다. –

답변

3

이것이 실제 요구 사항을 충족시키는 지 확신하지는 않지만 ExecuteListener을 사용하면 jOOQ의 일반 쿼리 실행 라이프 사이클에 연결하여 jOOQ의 예외 처리에 일부 동작을 주입 할 수 있습니다. 몇 가지 예는 여기에 제공됩니다 : 특히

http://www.jooq.org/doc/3.1/manual/sql-execution/execute-listeners

, 사용자 정의 ExecuteListener를 다음과 같습니다

public class MyListener extends DefaultExecuteListener { 

    @Override 
    public void exception(ExecuteContext ctx) { 
     // Put some logic here 
    } 
} 

참고이 현재 자체를 예외의 던지는을 방지하지 않습니다.