2012-06-20 40 views
3

這個問題是基於我問的here。相同的關係和相同的目標。我有一個事情的例子。我想獲得與所有與Bar實例相關的Bar實例關聯的Foo的所有實例。Grails /休眠標準ID inList

我在我的模型中有一個方法,它返回基於某些條件的對象列表。

class Foo { 

    static List findAllAssociatedWith(Object obj) { 
     def results = null 
     if(obj instanceof Bar) { 
      results = Foo.withCriteria() { 
       bars{ 
        //inList("id", Thing.bars.id) // this does not work 
        inList("id", [new Long(3), new Long(4)]) // this works 
       } 
      } 
     } 
     return results 
    } 
} 

Thing.bars.id返回IDS我要覈對清單,但顯然這是一個即使多頭有望整數的ArrayList。這是錯誤我得到:

java.util.ArrayList cannot be cast to java.lang.Long. Stacktrace follows: 
Message: java.util.ArrayList cannot be cast to java.lang.Long 

爲什麼Thing.bars.id返回整數,而不是多頭的列表清單,我該如何解決?

UPDATE:

我發現打電話println Things.bars.id後的問題。我希望它返回的數字是這樣一個ArrayList(整數或多頭):

[3,4] 

,而是我的ArrayList,其中第一陣列名單是我想要的東西,第二個數組列表是空列表的ArrayList ,像這樣:

[ [ 3, 4 ], [] ] 

不知道爲什麼Grails的做到這一點,但它周圍的一個簡單的方法,現在是Thing.bars.id.get(0)

回答

0

沒有看到定義爲Thing.bars,這是很難說是怎麼回事。但是,如果你有你想變成多頭整數的列表,你可以使用

Thing.bars.id*.asType(Long) 
+0

感謝您的快速回復。我稍微問了一個類似的問題,並通過鏈接回到我之前有圖形的問題來更新這個問題。 – ubiquibacon