Erstellen Sie eine Tabelle mit Foreign Collection Field
Ich habe diese abstrakte Klasse:
DomainItem
<code>abstract public class DomainItem { @DatabaseField(generatedId = true) protected long id; @ForeignCollectionField(eager = false) protected ForeignCollection<ContentItem> contentItens; //getters and setters } </code>
Inhaltselement:
<code>abstract public class ContentItem { @DatabaseField(generatedId = true) protected long id; @DatabaseField(foreign = true) protected DomainItem domainItem; @DatabaseField() protected String content; //getters and setters } </code>
Und diese (keine Zusammenfassung):
<code>@DatabaseTable() public class PhytoterapicItem extends DomainItem{ public PhytoterapicItem(){ } } </code>
PhytoterapicContent
<code>@DatabaseTable(tableName = "phytoterapiccontent") public class PhytoterapicContent extends ContentItem { @DatabaseField(canBeNull = false) private String defaultName; @DatabaseField(canBeNull = false) private String scientificName; //getters and setters } </code>
In meinem DatabaseHelper versuche ich die Tabellen zu erstellen:
<code>//DatabaseHelper ... @Override public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) { try { Log.i(TAG, "onCreate"); TableUtils.createTable(connectionSource, PhytoterapicContent.class); Log.i(TAG, "Created table PhytoterapicContent"); TableUtils.createTable(connectionSource, PhytoterapicItem.class); Log.i(TAG, "Created table PhytoterapicItem"); catch{ ... } </code>
Die Tabelle PhytoterapicContent wird erstellt. Aber ich habe den folgenden Fehler bekommen:
java.sql.SQLException: Fremdauflistungsklasse br.com.project.model.ContentItem für Feld 'contentItens' Spaltenname enthält kein Fremdfeld der Klasse br.com.project.model.PhytoterapicItem