根據上一個問題的答案(答案在這裏:SQL/Database Views in Grails),我嘗試使用一個域類來表示數據庫中的視圖。然而,在大多數情況下,這種方式非常有效:我有一個沒有唯一唯一鍵的視圖。比方說,基礎表看起來就像這樣:沒有ID字段或部分爲NULL複合字段的Grails域類
答:
ID,VARx前提
1, 「嗒嗒」
2, 「富」
3, 「酒吧」
B:
ID,A.id,C.id
1,2,1
2,2,2
3,3,1
C:
ID,變化
1, 「轟」
2, 「菲茲爾」
我的看法是這樣的:
A.id,VARx前提,B.id,C.id,變化
1 ,「Blah」,NULL,NULL,NULL
2,「Foo」,1,1,「Boom」
2,「Foo」,2,2,「Fizzle」
3,「Bar」,3, 1,「繁榮」
這正是它應該如何尋找我們的目的。然而,正如你可以看到,我們可以構建視圖的最獨特的複合ID爲[「A.id」,「C.id」],因爲這唯一標識每個元素,但Grails的,因爲它似乎無法對付失敗部分複合標識爲NULL(實際上,list()返回一個包含4個對象的列表,其中第一個是空指針,其餘部分是視圖的實際域實例)。
請注意,我們也可以使用A.id和B.id,但它遭受同樣的問題。
還要注意的是,我們要顯示,如果有在表B.多個相應的條目從表A中至少一次的元件(具有空值在表沒有發現B/C的任何字段),可能多次
所以,我的問題是2部分:
1:是否有可能定義一個沒有任何ID字段的grails域類?我們不需要任何視圖條目的永久句柄,我們只需要在該視圖中列出數據。
2:如果沒有,是可以限定具有複合ID字段,其一部分可以是NULL一個Grails域類,但其將唯一地識別無論如何一排即使複合ID的一部分是NULL?
我知道我們可以直接使用Groovy SQL直接查詢視圖而無需關聯的域類(我們現在正在實際執行此操作),但理想情況下我們希望使用域類來表示視圖。此外,除了所有的論點之外,這兩個問題可以更一般地應用,而不僅僅是我們的特定問題。
結果/是/空的B.id,C.id,並改變......看到這行: 1, 「嗒嗒」,NULL,NULL,NULL 視圖使用兩個左聯接。 另外,是的,我嘗試了所有這些,問題是組合字段中的任何組件都不能爲null,對於上述視圖的任何合理組合字段而言都是如此。 – 2009-12-22 17:04:59