我們的應用程序是基於Scala的,基於Play!框架。我使用Scala Random生成了一個隨機數。這是用作我們應用中每個帳戶的唯一密鑰。將字符串轉換爲長字符時出現Scala NumberFormatException?
然而,當我去到新帳戶保存到數據庫中,它拋出一個java.lang.NumberFormatException
:
更多信息:我的帳戶ID的字符串轉換爲斯卡拉龍。我正在使用Squeryl對象查找它,獲取ID,然後將其轉換。這裏是什麼樣子:
val account_id = Account.findAccountByUnique(account.uniqueKey).id.toLong
這是findAccountByUnique樣子:
def findAccountByUnique(criteria: String) = {
from(DB.accounts)(a =>
where(a.uniqueKey == criteria)
select (a))
}
上錯誤的堆棧跟蹤:
java.lang.NumberFormatException: For input string: "468b68c"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at scala.collection.immutable.StringLike$class.toLong(StringLike.scala:209)
at scala.collection.immutable.StringOps.toLong(StringOps.scala:31)
at controllers.Accounts$.save(Accounts.scala:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:548)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:502)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:496)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:473)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161)
at play.server.PlayHandler$NettyInvocation.execute(PlayHandler.java:257)
at play.Invoker$Invocation.run(Invoker.java:278)
at play.server.PlayHandler$NettyInvocation.run(PlayHandler.java:235)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
我類型強制轉換的唯一密鑰Scala Long
和String
,但它會引發相同的錯誤。任何想法修復?
如果您獲得一系列隨機數,它們不一定是唯一的。爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2012-02-11 08:42:45
你需要什麼信息?既然你的評論,我甚至用java.UUID(非常獨特)嘗試它,它會引發相同的錯誤。 – crockpotveggies 2012-02-11 08:51:31
*「您還需要什麼信息?」* S-C-C-E的哪一部分難以理解? – 2012-02-11 08:56:18