Bestehende Objekte in SugarORM
Ich habe eine Buchklasse:
public class Book extends SugarRecord {
private String mBookName;
private String mAuthorName;
private List<Page> mPageList;
public Book() {
}
public Book(String bookname, String authorName) {
mBookName = bookname;
mAuthorName = authorName;
mPageList = new ArrayList<>();
}
public String getAuthorName() {
return mAuthorName;
}
public void setAuthorName(String authorName) {
mAuthorName = authorName;
}
public String getBookName() {
return mBookName;
}
public void setBookName(String bookName) {
mBookName = bookName;
}
public void addPage(Page page) {
mPageList.add(page);
}
}
und die Seitenklasse:
public class Page extends SugarRecord {
private String mText;
public Page() {
}
public Page(String text) {
mText = text;
}
public String getText() {
return mText;
}
public void setText(String text) {
mText = text;
}
}
Ich teste es mit diesem:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Book book = new Book("Some Book Title", "John Doe");
Page page1 = new Page("Once upon a time there was a very lonely bunny who wanted some friends.");
Page page2 = new Page("So he found some friends, and everyone was happy.");
Page page3 = new Page("The end!");
book.addPage(page1);
book.addPage(page2);
book.addPage(page3);
book.save();
}
}
Aber es funktioniert nicht wie erwartet. Es wird versucht, @ zu machmPageList
eine eigene Spalte mit diesem .schema:
CREATE TABLE BOOK ( ID INTEGER PRIMARY KEY AUTOINCREMENT , M_AUTHOR_NAME TEXT, M_BOOK_NAME TEXT, M_PAGE_LIST );
Was ich wirklich möchte, ist, die Liste nicht als eigene Spalte zu behandeln, sondern die Seiten in der PAGE-Tabelle zu speichern, mit zusätzlichen IDs, die auf diese Book-Klasse verweisen (was ich also erwarte, ist so etwas wieID, BOOK_ID, M_TEXT
). Kurz gesagt, Persistenzoperationen, die verschachtelte untergeordnete Objekte durchlaufen.
Kann das in SugarORM gemacht werden?