我在Grails中有一些投影問題。你能幫我回顧一下併爲我提供解決方案嗎?Grails:許多桌子上的投影?
我想查詢許多表上的數據,這些表上有多對一的關係,並且在它們兩個上的某些屬性上有投影。例如:
class Person { int id String name String address static hasMany = [cars : Car] } class Car { int id String brand long price Person owner static belongsTo = [owner : Person] }
所以,我怎麼可以只使用一個查詢withCriteria(適用投影)來獲得指定的汽車(包括品牌,價格和所有者名稱)的信息?是否有可能使用:
Car.withCriteria { projections { property("brand") property("price") property("owner.name") } eq("id", carId) }
我可以使用的投影與他的所有汽車的名字相處一個特定的人的信息?例如:[01,Perter,01 Street A,[Mercedes,Toyota,Ducatti]]?
一種特殊情況:(以上人物類)
一個人可以加入許多組織和機構可以有一個「父」組織(反之亦然,一個組織可以有很多其他的依賴組織)。但有一條規則:一個人只能加入一個特定組織的一個兒童組織。所以對於一個給定的組織O和一個人P,獲取P的信息的最快方式是什麼,以及以P作爲成員的O組織的名稱。我更喜歡使用Grails投影。這裏的數據模型:
class Person { int id String name String address static hasMany = [joinedOrgs : Organization] } class Organization { int id String name Organization parentOrg static hasMany = [members : Person, childOrgs : Organization] }
我與Grails的一個新手,我想了解GORM得多。非常感謝你的幫助。
爲什麼了'alias'所需要的崗位亮點? – 2015-07-08 13:33:43
@AlexanderSuraphel沒有別名,您不能直接在 'property('owner.name','owner.name')' 中直接訪問'owner.name'即使您可以在沒有別名的情況下獲得上述結果,但您需要爲此編寫更多代碼。見下面的例子 '預測{ 所有者{ 屬性( '名', '名') } 財產( '品牌', '品牌') 財產( '價格', '價格') }' 請讓我知道你是否仍然有任何困惑,或者對你而言這不是一個正確的答案。 謝謝 – 2015-10-15 08:15:42
@AlexanderSuraphel如果你可以在沒有createAlias('owner','owner')'的情況下編寫上面的代碼,可能在grails的新版本中可能會有效。 – 2015-10-15 08:19:57