1 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
只要看看比格的Java文檔:
public long longValue()
將此大整數(shù)轉(zhuǎn)換為多頭。此轉(zhuǎn)換類(lèi)似于 Java? 語(yǔ)言規(guī)范第 5.1.3 節(jié)中定義的從長(zhǎng)整型到 int 的縮小基元轉(zhuǎn)換:如果此 BigInteger 太大而無(wú)法放入長(zhǎng)整型,則僅返回低階 64 位。請(qǐng)注意,此轉(zhuǎn)換可能會(huì)丟失有關(guān) BigInteger 值的總體大小的信息,并返回帶有相反符號(hào)的結(jié)果。
所以你會(huì)想要這樣的東西:
return ((BigInteger)em.createNativeQuery(sql).getSingleResult()).longValue();
我建議添加一些類(lèi)型檢查。
--
如果您完全控制應(yīng)用程序,并且希望值超出 的范圍,則另一種選擇是讓方法返回而不是 :long
BigInteger
long
public BigInteger get_urlnodeid(long nodeID) {
和:
return (BigInteger) em.createNativeQuery(sql).getSingleResult();
當(dāng)然,調(diào)用此方法的應(yīng)用程序的其余部分也必須使用。BigInteger
請(qǐng)注意,使用代替的性能要低得多,因此,僅當(dāng)性能不是問(wèn)題,或者您絕對(duì)確定值會(huì)非常大以至于絕對(duì)必要時(shí),才使用此選項(xiàng)。BigInteger
long
添加回答
舉報(bào)