2015-07-01 6 views
6

Um eine Eins-zu-eins-Beziehungen in Grails erstelle ich tun kann:Grails hasOne vs. belongsTo

class Person { 
    static hasOne = [address: Address] 
} 

In diesem Fall wird die Adresstabelle den Schlüssel zu seiner Person hat. Ich könnte auch tun:

class Address { 
    static belongsTo = [person: Person] 
} 

Dies ergibt das gleiche Ergebnis.

Was ist der Unterschied zwischen meinen zwei Proben mit hasOne und belongsTo?

Antwort

6

hasOne gibt an, dass eine bidirektionale Eins-zu-Eins-Beziehung besteht, in der die untergeordnete Tabelle den Fremdschlüssel des Parents wie in Ihrem Beispiel hat.

belongsTo wird zum Steuern von Kaskaden verwendet, indem angegeben wird, dass die Klasse zu der angegebenen Klasse gehört. In Ihrem Beispiel würde das Löschen einer gegebenen Person das Löschen zu einer assoziierten Address es kaskadieren.