4

AndroidアプリのDALレイヤーにORMGreenDAOを使用しています。2つのテーブル間の1対1の関係に問題があります。例えば:

Entity page = schema.addEntity("Page");
Entity bookmark = schema.addEntity("Bookmark");

Property pageIdProperty = bookmark.addLongProperty("pageId").getProperty();

bookmark.addToOne(page, pageIdProperty); // any bookmark related to a page
page.addToOne(bookmark, pageIdProperty); // any page can has a bookmark

この関係は間違いですか?

定義するとpage.getBookmark()ページクラスで呼び出すことができません

これが本当の場合、1対1の関係で双方向にする方法はありますか?

4

3 に答える 3

5

まず、1 対 1 の関係の適切な使用例はほとんどありません。1対多ではないことは確かですか?それでも 1 対 1 だと思う場合: 両方のエンティティを 1 つにマージするのは理にかなっていますか?

それに加えて、bookmark.addToOne(page, pageIdProperty) は問題ありませんが、page.addToOne(bookmark, pageIdProperty) は機能しません。対 1 関係では、id プロパティが同じエンティティにある必要があります。to-many はこのように動作します。詳細については、relation のドキュメントを確認してください。

于 2012-08-02T12:22:34.483 に答える
0

いくつかのエラーがあります。まず、ブックマークの FK プロパティの前に PK を作成する必要があります。

これを試して:

Entity page = schema.addEntity("Page"); 
Entity bookmark = schema.addEntity("Bookmark");

bookmark.addLongProperty("bookmarkId").primaryKey().autoincrement();
Property fkPage = bookmark.addLongProperty("pageId").getProperty();

bookmark.addToOne(page, fkPage).setName("page"); 

Page エンティティに対して同じ手順を実行します。

于 2018-04-19T19:24:11.370 に答える