1

私のAndroidアプリでは、サーバーからレコードを取得してデータベースに保存します.「メッセージ」レコードを、それらが接続されている「スレッド」レコードを最初に保存しなくても保存できるようにしたいと思います.

メッセージは次のもので構成されます。

  • 文字列 ID
  • 文字列本体
  • ロングセンド_ts
  • 文字列送信者 ID
  • 文字列トピック ID

ダミーの Topic インスタンスと User インスタンスを作成するのではなく、Message オブジェクトに topic_id と sender_id レコードを直接設定することは可能ですか? フィールドを外部としてマークせず、関連オブジェクトの簡単な検索をあきらめるか、ネストされたすべてのオブジェクトを最初に保存することはできますが、キーが外部から提供されている場合、外部キー参照を直接設定することは可能ですか? ?

これは、標準の Android SQLite セットアップを使用して Android で行われています。

編集

最終的に、同じデータベース テーブルに複数のモデルを記述することにしました。これは最も洗練されたソリューションではありませんが、コンテキストに応じて、外部 ID フィールドに直接入力するか、他のテーブルに結合できる唯一の方法のように思われました。

4

1 に答える 1

1

「メッセージ」レコードが関連付けられている「スレッド」レコードを最初に保存しなくても、「メッセージ」レコードを保存できるようにしたいと考えています。

それぞれMessageに外部フィールドTopicとフィールドがあり、これらの外部オブジェクトにインスタンスを割り当てるにインスタンスUserを永続化したいですか?Message

はい、確かにtopicanduserフィールドをそのままにしておくことができますnull。もちろん、それらをマークする必要がありますcanBeNull=truetopicその後、問題のまたはuserフィールドを設定してから、データベースを更新するためMessageに呼び出すことができるはずです。messageDao.update(message)

編集:

あなたのコメントを読んだ後、私は今理解しました。id フィールドが設定されているだけのダミー オブジェクトを作成する代わりに、id フィールドをクラスに保存する方法はありますか? 生の SQL create ステートメントを自分で実行しない限り、答えはありません。ORMLite にはTopicフィールドが必要です。それが期待されているからです。IDだけが必要な場合は、int topic_id代わりにフィールドを使用Topic topicして、トピックの関連付けを自分で行うことができます。

于 2013-09-24T18:03:45.760 に答える