2016-07-07 17 views
1

Ich habe gerade begonnen, GreenRobot ORM zu verwenden und mit DB-Erstellung gestapelt. Ich muss N: M-Beziehung zwischen zwei Tabellen erstellen. Offizielles Dokument sagt, dass sie N: M immer noch nicht unterstützen, also muss ich das selbst implementieren.GreenDao. N: M Relation

So lässt Ich habe 2 Einheiten vorstellen: Übung und Zubehör. Sie sehen aus wie:

Entity accessories = schema.addEntity("Accessories"); 
     accessories.addIdProperty(); 
     accessories.addStringProperty("name").unique().notNull(); 
     accessories.addStringProperty("desc"); 
Entity exercise = schema.addEntity("Exercise"); 
     exercise.addIdProperty(); 
     exercise.addStringProperty("name"); 
     exercise.addStringProperty("desc"); 
     exercise.addByteProperty("level"); 

Und nun möchte ich eine andere Einheit schaffen Exercise_Accessories, die über Ids dieser Einheiten enthält. Wie kann ich es tun?

Vielen Dank.

Antwort

4

Ja, Sie haben Recht, dass Sie eine mittlere Entität erstellen müssen, die Verweise auf die IDs der Objekte enthält, die Sie in der N: M-Beziehung verknüpfen möchten.

ein Unternehmen erstellen und die Eigenschaften der ids erhalten:

Entity exerciseAccesories = schema.addEntity("ExercisesAccesories") 
exerciseAccesories.addIdProperty(); 
Property exerciseId = exerciseAccesories.addLongProperty("exercise").getProperty(); 
Property accessoryId = exerciseAccesories.addLongProperty("accessory").getProperty(); 

Und dann link the properties:

accessories.addToMany(exerciseAccesories, accessoryId).setName("accessoryRef"); 
exercise.addToMany(exerciseAccesories, exerciseId).setName("exerciseRef"); 

Mead mehr über SQL, da dies eine Standardmethode ist many-to-many zu modellieren Beziehungen.

Natürlich wird diese Entitätszeile nicht automatisch zur Datenbank hinzugefügt, wenn Entity und Accessory hinzugefügt werden. Sie müssen es manuell einfügen.

+0

Vielen Dank! Nur noch eine Frage - sollte ich ORM in einer einfachen Anwendung verwenden oder genügt es, Google API zu verwenden? –

+1

Mit GoogleAPI meinen Sie Standard Android SQLite Framework? Sie können, aber denken Sie daran, dass in diesem Fall alle SQL-Anweisungen von Ihnen geschrieben werden müssen. GreenDao ist einfacher, da es Ihnen hilft, das im Code zu tun (ohne SQL zu berühren), jedoch können nur Standardauswahl- oder Einfügeoperationen durchgeführt werden. Zum Beispiel können Sie nur ganze Objekte und nicht ihre spezifischen Eigenschaften abfragen. –

+0

Ich meinte "Cursor", ok, nochmals vielen Dank. Ich werde ORM versuchen:] Einen schönen Tag. –

Verwandte Themen