Mehrere Primärschlüssel - ORMlite

8

Ich habe eine Datenbank für meine Android-App erstellt, die 16 Tabellen enthält. Ich möchte ORMLite Mapping verwenden. Das Problem ist, dass ich keine Beispiele gefunden habe, wo Sie eine zusammengesetzte ID (mehrere Primärschlüssel) haben. Zum Beispiel habe ich eine Tabelle:

%Vor%

Können Sie mir bitte sagen, wie ich diese Tabelle der Klasse zuordnen soll (wie diese Klasse aussehen soll), ist das überhaupt möglich?

    
sekula87 06.05.2012, 09:42
quelle

4 Antworten

6
  

Einschränkungen

     

Der Einfachheit halber und damit die gleiche POCO-Klasse in db4o, memcached, redis oder im Dateisystem beibehalten werden kann (d. h.   Anbieter, die in ServiceStack enthalten sind), muss jedes Modell eine einzige haben   Primärschlüssel, per Konvention OrmLite erwartet, dass es Id ist, obwohl Sie   benutze [Alias ​​("DbFieldName")] attribiere es auf eine Spalte mit einem   anderen Namen oder verwenden Sie das Attribut [PrimaryKey], um OrmLite mitzuteilen   Verwenden Sie eine andere Eigenschaft für den Primärschlüssel.

     

Sie können immer noch SELECT aus diesen Tabellen auswählen, Sie werden es einfach nicht können   Verwenden von APIs, die darauf beruhen, z. Aktualisieren oder Löschen, wo der   Filter ist implizit (d. h. nicht angegeben), alle APIs, die mit enden   ById usw.

     

Umgehung einzelner Primärschlüsseleinschränkungen

     

Eine mögliche Problemumgehung zur Unterstützung von Tabellen mit mehreren Primärschlüsseln ist   Erstellen einer automatisch generierten Id-Eigenschaft, die einen eindeutigen Wert zurückgibt   basierend auf allen Primärschlüsselfeldern, z. B .:

%Vor%

Ссылка

    
Rodolfo 03.12.2012, 14:01
quelle
18

Sie müssen die folgende Anmerkung über jedem eindeutigen Feld verwenden:

  

@DatenbankFeld (uniqueCombo = true)

Hier sind die Dokumente zu uniqueCombo .

    
Zakaria 06.05.2012 09:55
quelle
9

Es ist möglich, ein künstliches ID-Feld zu erzeugen, das aus einer Zusammensetzung anderer Felder besteht. Dies kann durch Einstellungen der useSetGet Eigenschaft in @DatabaseField Annotation to true. Dadurch ruft ORMLite die Getter- und Setter-Methoden auf, anstatt Reflektionen zu verwenden.

In Ihrem Getter können Sie dann eine Zusammensetzung Ihrer Felder zurückgeben.

Das würde in Ihrem Beispiel etwa so aussehen:

%Vor%

Ссылка

    
super-qua 17.12.2013 15:48
quelle
0

Ormlite von ServiceStack unterstützt nicht mehrere zusammengesetzte Primärschlüssel. Damit Ihre POCOs auch außerhalb einer db nützlich sind (zB NoSQL-Datenspeicher, Cache-Provider usw.) erwartet Ormlite für jeden Typ einen einzelnen Primärschlüssel, der standardmäßig die Id -Eigenschaft ist (überschreibbar mit der ModelConfig-Klasse oder% co_de) %, [PrimaryKey] Attribute).

Work-arounds, um diese Einschränkung zu umgehen, umfassen das Erstellen einer einzelnen eindeutigen ID, aber eine eindeutige Einschränkung für die zusammengesetzten Primärschlüssel, z. B .:

%Vor%

Oder erstellen Sie eine Pseudospalte, die eine Kombination aller Primärschlüssel enthält, z. B .:

%Vor%     
mythz 20.02.2013 00:30
quelle

Tags und Links