2
我有一個表名稱爲「BID」,其數據類型設置爲NUMERIC(20,0)。現在我知道它永遠不會是一個十進制/浮點值,但始終是一個int/long,即自然數。代碼生成器將NUMERIC(20,0)解釋爲BIGDECIMAL,但它應該解釋爲Long
有沒有一種方法讓代碼生成器在生成的模型類中生成一個Long變量,而不是它現在生成的java.math.BigDecimal。可以在jooq.properties中設置嗎?
我有一個表名稱爲「BID」,其數據類型設置爲NUMERIC(20,0)。現在我知道它永遠不會是一個十進制/浮點值,但始終是一個int/long,即自然數。代碼生成器將NUMERIC(20,0)解釋爲BIGDECIMAL,但它應該解釋爲Long
有沒有一種方法讓代碼生成器在生成的模型類中生成一個Long變量,而不是它現在生成的java.math.BigDecimal。可以在jooq.properties中設置嗎?
此「功能」目前僅適用於Oracle數據庫,其中NUMBER
是唯一可用的數字類型。使用Oracle with jOOQ,NUMBER(20, 0)
將映射到java.math.BigInteger
而不是java.math.BigDecimal
。
此行爲也可用於下一版本1.6.3中的其他RDBMS。見
https://sourceforge.net/apps/trac/jooq/ticket/639
除此之外,在代碼生成的數據類型映射的壓倒一切的是目前不可能的,但你可以使用BIGINT
由GBN的建議,如果你並不真的需要20個十進制數字。 BIGINT
可以容納大多數19位小數......
爲什麼不在數據庫管理系統中使用int或更長? – gbn
@gbn:NUMERIC(20,0)可以保存比BIGINT更大的數字(Java中的'Long',它只有19位小數)... –
@Lukas Eder:NUMERIC(20,0)(+ - 9.99 E20)僅僅是64位以上的signed int(+ - 9.2E18)。更高的數字,是的,但高達19/20是32位限制的經典(例如SQL Server 2000之前的傳統)解決方法 – gbn