問題タブ [greendao-generator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 主キーではない列との関係を作成する
現在、ORMlite から GreenDao に切り替えていますが、greendao でデータベース モデルを作成するのに問題があります。
私のコンテンツは、サーバーが生成された主キーを持つエントリを文字列として識別するサーバーから取得されます。私の内部データベースには、(Android が必要とするように) Long の主キーがあります。
同期するときは、サーバーから配信されたキー (ここでは「backendId」) に基づいてリレーションを作成し、同期を簡単にする必要があります。
ORMlite では、リレーションシップを作成するために使用する列を指定できます。同じことを greendao 用に作成しようとしましたが、失敗しました。
これが私が試したことです:セクターは資産を持つことができます。「assetId」には、アセットの「backendId」に格納されている値が含まれている必要があります。
どうすればそれを達成できるのでしょうか?
その挿入の結果、「assetId」は資産テーブルの主キーですが、「backendId」にする必要があります。
何か案は?
android - greenDao: Android の sqlite ファイルにデータを保存する
Androidスマートフォンのファイルシステムにあるsqliteファイルにデータを保存するための推奨される方法は何ですか? デバイスの再起動後もデータを復元するつもりです。"DaoMaster.createAllTables(db, true)" と "DaoMaster.createAllTables(db, false)" の違いは何ですか?
現在、MainActivity.java でこのコードを使用しています。
生成された DaoMaster.java を変更する必要がありました。
android - android greendaoはエンティティの特定のフィールドのみを更新します
私はしばらくの間、問題の解決策を探していましたが、成功しませんでした。
データベース内の特定のエンティティの情報をさまざまなサービスから受け取るアプリケーションがあるため、greenDAOs insertOrReplace メソッドを使用しているため、エンティティが DB に既に存在する場合は、再作成する代わりに更新されます。
ここまでは順調ですね。
問題は..たとえば、私のエンティティが User と呼ばれ、フィールド id、title、および displayName があるとしましょう。
したがって、最初の呼び出しで、id フィールドと title フィールドのみを持つユーザーを含む JSON オブジェクトを取得するので、それを DB に挿入すると、当然、displayName は NULL として挿入されます。
その後、別のサービスから、同じユーザー (同じ id フィールド) を含む別の JSON を取得しますが、displayName も含まれていますが、タイトル情報はまったく含まれていません。
したがって、greenDAO によって自動的に生成された DAO オブジェクトで insertOrReplace を実行するたびに、ユーザーは更新されますが、タイトル情報が存在しないため、更新されるとタイトル フィールドが NULL にリセットされるため、データが失われます。
残念ながら、サービスから返されるデータを変更することができず、この問題を解決できませんでした。特定のフィールドのみを更新し、すべてのフィールドを更新しないように DAO オブジェクトに指示する簡単な方法がないとは信じがたいです。
私はgreenDAOによって生成されたコードを見ていました.生成されたdaoオブジェクトには、クエリが実行される前に呼び出されるbindValuesメソッドがあり、明らかにオブジェクトからNULLプロパティを除外しますが、いずれにしてもNULLで更新されます価値。
親クラスからいくつかのメソッドを追加して生成される最終的なdaoオブジェクトを変更することで、ある種の修正を思いつくことができましたが、すべてのdaoに対してこれを行う必要があるため、これは良い解決策ではないと思いますオブジェクト。(カスタム スーパークラスを定義できることはわかっていますが、これはエンティティ オブジェクトにのみ適用され、DAO オブジェクトには適用されません)。
誰かがこれを解決する方法について何か考えを持っているなら、本当に感謝しています.
ありがとう。
android - GreenDao IndsertOrReplaceInTx はリストの最後の項目のみを挿入します
私はいくつかのPOJOSを持っており、それらのためにいくつかのテーブルを作成しています。それらはすべてうまく機能します。つまり、それらを挿入してロードできます...これを除いて:
私のブランドリストには6つの要素が含まれており、それらが異なっていると確信しています(ブレークポイントを置いて見ました)が、DBに挿入しようとするとgreenDao
最後の要素だけが挿入されます。私のテーブルは空で、このステートメントはそれを埋めることを想定しています。
コード:
生成されたブランド コード:
スキーマを作成するためのコード:
そして最後に、それらを挿入する方法:
ブレークポイントを設定して確認するbrandlist
と、6 つの要素があります。
ヘルプ、回避策、デバッグのヒント...何が問題なのか本当にわかりません。
どうもありがとう!!
編集:
私は非常に単純な(本当に単純だと信じています:-))ファイルからjsonを読み取り、それを解析してリストし、これでdbに挿入するテストプロジェクトを作成しましたが、問題が存在します。誰かが私の間違いを教えてもらえますか? 大変感謝します :-)。