2015-09-25 68 views
0

從grails文檔中,我想了解下面的示例。是瞭解在grails中映射

enter image description here

是由這兩個域定義創建的表如下:

enter image description here

什麼,我不知道這裏是什麼是在指定的的mappedBy的目的機場領域?謝謝您的幫助!

+0

如果你忽略'mappedBy',會發生什麼? – injecteer

回答

1

mappedBy用於知道應該用於hasMany關係的另一側的哪個關係(外鍵列)。只有在不明顯的情況下才有必要。在上面的示例中,flights關係應該使用departureAirportsmappedBy是必要的,因爲destinationAirport也是與類/表的關係Airport類/表。如果在這種情況下省略mappedBy,則不清楚使用哪個關係,並且最終可能會得到由錯誤外鍵列映射的關係。你可能很幸運,它選擇了正確的,但它不是確定性的,它可能導致意想不到的行爲。

儘管如此,代碼生成的表看起來是一樣的。這是表格的應用程序使用/映射將有所不同。

+0

謝謝,但我仍然困惑。你說航班關係應該使用出境航空公司,這是必要的,但我認爲航班是航班類型的集合,航班有出境機場和目的地機場,那麼爲什麼我們只需指定航班作爲departureAirport?謝謝您的幫助! – kofhearts

+0

這取決於領域邏輯。在這個例子中,機場只對列出出發航班感興趣。如果機場想要列出到達航班,則需要爲到達航班創建新的hasMany關係。而且這個關係需要mappedBy,因爲它使用的關係又是模糊的。 – stenix