Grails: Projektion auf vielen Tischen?

8

Ich habe Probleme mit der Projektion in Grails. Könnten Sie mir bitte helfen, sie zu überprüfen und Lösungen für mich vorschlagen?

  1. Ich möchte Daten in vielen Tabellen abfragen, die auf beiden Eigenschaften viele Eins-zu-Eins-Beziehungen und Projektionen haben. Zum Beispiel:

    %Vor%

    Wie kann ich also nur eine Abfrage mit Criteria (Projektion anwenden) verwenden, um Informationen zu einem bestimmten Fahrzeug zu erhalten (Marke, Preis und Eigentümername)? Ist es möglich zu verwenden:

    %Vor%
  2. Kann ich eine Projektion verwenden, um Informationen einer bestimmten Person zusammen mit dem Namen aller seiner Autos zu erhalten? Zum Beispiel: [01, Perter, 01 Street A, [Mercedes, Toyota, Ducatti]]?

  3. Eine besondere Situation: (mit obiger Personenklasse)
    Eine Person kann vielen Organisationen beitreten, und eine Organisation kann eine "Eltern" -Organisation haben (und umgekehrt kann eine Organisation viele andere abhängige Organisationen haben). Aber es gibt eine Regel: Eine Person kann nur einer Kinderorganisation einer bestimmten Organisation beitreten. Also, mit einer gegebenen Organisation O und einer Person P, was ist der schnellste Weg, Informationen von P zusammen mit dem Namen der abhängigen Organisation von O zu erhalten, die P als Mitglied hat. Ich bevorzuge die Projektion von Grails.

    Hier ist das Datenmodell:

    %Vor%

Ich bin ein Neuling mit Grails, und ich würde GORM gerne mehr verstehen. Vielen Dank für Ihre Hilfe.

    
Đinh Hồng Châu 24.04.2011, 16:09
quelle

3 Antworten

1

Für (1) und (2) weiß ich nicht, ob es eine Möglichkeit gibt, das zu tun, was Sie wollen, mit nur einer Kriterienabfrage, aber der alternative Weg scheint einfach und natürlich zu sein. Für (1):

%Vor%

Für (2)

%Vor%

Über (3), es ist ein Designproblem hier. Ihr aktuelles Domänen-Design spiegelt nicht die von Ihnen beschriebene Regel wider, daher wird es schwierig, diese Einschränkung beizubehalten. Sie können das Zuordnen einer PersonOrganization-Tabelle und in childrenOrganization als Übergangseigenschaft berücksichtigen . Zum Beispiel:

%Vor%

Danach können Sie eine Rückverfolgungsfunktion wie getAllAncestors () verwenden, um alle übergeordneten Hierarchie einer Organisation zu ermitteln, die in der Personenorganisationsliste nachgeschlagen wird. Es scheint nicht der beste Weg, aber das ist ein möglicher Weg.

    
Hoàng Long 25.04.2011, 07:20
quelle
10

Versuchen Sie es

%Vor%     
Muhammad Aamir Talib 14.09.2011 11:32
quelle
3

Für (Nr. 1) Ich denke, was Sie suchen, wird hier erklärt

Ссылка

%Vor%

Der Beitrag wird mit .createCriteria()

hervorgehoben     
Daxon 28.06.2011 11:41
quelle

Tags und Links