2017-12-14 7 views
1

ich eine Song-Liste in meinem app gecached werden soll, die Song-Liste Struktur ist wie folgt:Wie speichert man ein Objekt-Array mit Room in Android?

@Entity 
public class Songlist { 
     String _id; 
     String desc; 
     List<SongDesc> songWithComment; 
     ..... 

    public static class SongDesc { 
     String comment; 
     Song song; 
    } 
} 
@Entity 
pulbic class Song { 
     String name; 
     String type; 
     ...... 
} 

Die lib Betrieb sqlite3 ist android.arch.persistence.room, aber es dosen't Objektreferenzen in einer Tabelle ermöglichen. Gibt es eine Möglichkeit, eine Songliste mit Room in Android zu cachen?

+1

Sie trennen brauchen würde '@Entity 'Klassen, die die Datenbankstruktur modellieren (zB' SonglistEntity', 'SongEntity'), wobei der Song eine' @ ForeignKey'-Beziehung zurück zum Elternteil hat. – CommonsWare

+0

Danke für die Antwort! ein Lied kann durch unzählige Songlist enthalten, während eine Songliste begrenzte Songs enthält, vielleicht sollte ich einen '@ ForeignKey' in' Songlist' verwenden? Aber ich weiß nicht, wie ich mit der Liste umgehen soll ... – jaime

Antwort

1

Auch wenn Sie einige benutzerdefinierte Objekte speichern möchten, können Sie @Embedded Anmerkung wie in Beispiel verwenden Gebrüll:

class Address { 
public String street; 
public String state; 
public String city; 

@ColumnInfo(name = "post_code") 
public int postCode; 
} 


@Entity 
class User { 
@PrimaryKey 
public int id; 

public String firstName; 

@Embedded 
public Address address; 
}