2011-07-17 5 views
2

NUMERIC (20,0)으로 설정된 데이터 형식의 필드 이름이 "BID"인 테이블이 있습니다. 이제는 소수/부동 소수점 값이 될 수 없지만 항상 int/long 즉 자연수라는 것을 알고 있습니다.코드 생성기는 NUMERIC (20,0)을 BIGDECIMAL로 해석하지만 Long으로 해석해야합니다.

코드 생성기가 현재 생성 한 java.math.BigDecimal과 반대로 생성 된 모델 클래스의 변수를 Long으로 만들 수있는 방법이 있습니까? jooq.properties에서 설정할 수 있습니까 ??

+1

DBMS에서 int 이상을 사용하지 않는 이유는 무엇입니까? – gbn

+0

@gbn : NUMERIC (20,0)은 예를 들어'BIGINT' (Java에서는'Long', 19 자릿수 만있는 것)보다 다소 큰 수를 가질 수 있습니다 ... –

+0

@ Lukas Eder : NUMERIC (20,0) (+ - 9.99 E20)는 64 부호 정수 바로 위 (+ - 9.2E18)입니다. 예를 들어 더 높은 수치는 그렇지만 최대 19/20까지는 32 비트 한계에 대한 고전적인 예입니다 (예 : SQL Server 2000 이전 버전). – gbn

답변

1

이 "기능"은 현재 Oracle 데이터베이스에서만 사용할 수 있습니다. NUMBER이 사용 가능한 유일한 숫자 유형입니다. Oracle을 jOOQ와 함께 사용하면 NUMBER(20, 0)java.math.BigDecimal 대신 java.math.BigInteger으로 매핑됩니다.

이 동작은 다음 릴리스 1.6.3의 다른 RDBMS에서도 사용할 수 있습니다. 게다가

https://sourceforge.net/apps/trac/jooq/ticket/639

참조 코드 생성기의 데이터 유형 맵핑의 최우선은 현재 불가능하지만 당신이 정말로 20 진수가 필요하지 않은 경우, GBN에 의해 ​​제안 당신은 BIGINT를 사용할 수 있습니다. BIGINT은 대부분 19 자리 소수를 포함 할 수 있습니다 ...