2009-08-05 2 views
1

EJB3, JBoss AS 4.2.1 및 Oracle 10g를 사용하고 있습니다. 것은 시퀀스가 ​​깨진대로 전개 할 때마다입니다. 예 : 두 번째 코드에서 시퀀스를 찾고있을 때 마지막 값은 41이지만 새 항목에 설정된 실제 ID는 1050입니다. 이 문제에 대해 알려진 버그 나 버그가 있습니까? 감사합니다. .Oracle Broken Sequence

답변

1

오라클은 따라서 차이, 빠른 액세스를 위해 일련 번호를 캐시합니다. 예상되는 행동.

ALTER SEQUENCE 명령을 실행하여 카운터를 올바른 값으로 재설정 할 수 있습니다.

+1

1050 *이 "올바른"값이라고 주장합니다. 시퀀스와 자동 생성 된 키 값을 사용할 때주의해야 할 것은 "사용할 ID를 새 행에 대해 고유해야한다는 것을 알려주는 것입니다."만 알면됩니다. 다른 말로하면, 당신이 어디에 있든 상관하지 않는다면 결코 잃어 버리지 않을 것입니다. –

0

답장을 보내 주셔서 감사합니다. 내 문제는 내 엔티티의 기본 할당 크기로 인해 발생했습니다. allocationSize의 기본값은 50입니다. 즉, jboss 애플리케이션은 각 50 개의 엔티티 생성을 오라클 db에 요청합니다. 오라클에있는 순차의 캐시 값은 20입니다. 즉, 데이터베이스에 1000 개의 레코드를 삽입하면 순차가 nextVal 20을 증가시킵니다.