2013-01-17 50 views
2

斯卡拉菜鳥恐怕:Scala和JPA結果列表

我有以下聲明的類變量,將我從數據庫中讀取的對象:

val options = mutable.LinkedList[DivisionSelectOption]() 

我然後使用JPA獲得從表中的所有行的列表:

val divisionOptions = em.createNamedQuery("SelectOption.all", classOf[SelectOption]) getResultList 
/* Wrap java List in Scala List */ 
val wrappedOptions = JListWrapper.apply(divisionOptions) 
/* Store the wrappedOptions in the class variable */ 
options += wrappedOptions 

然而,在最後一行有一個錯誤:

Type Expected: String, actual JListWrapper[SelectOption] 

任何人都可以幫助我做錯了什麼?我只是試圖用DB調用的結果填充options對象。

感謝

回答

1

什麼(可能)的情況是,一個JlistWrapper[SelectOption]不是DivisionSelectOption,因此該方法+=並不適用於它。既然如此,它試圖其他的東西,並在此給出一個最終的錯誤:

options = options + wrappedOptions 

這是一個重寫的Scala可以做,使事情像var xx += 1工作。 +方法存在於所有對象上,但它需要String作爲參數 - 這樣就可以編寫像options + ":"這樣的東西,並且可以像在Java中那樣工作。但由於wrappedOptions不是String,它抱怨。

迂迴和混亂,我知道,甚至奧德斯基對+感到遺憾。讓這是一個教訓:如果你想添加一個方法到Any,想想確實很難做到這一點。