問題タブ [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.

0 投票する
1 に答える
798 参照

android - 主キーではない列との関係を作成する

現在、ORMlite から GreenDao に切り替えていますが、greendao でデータベース モデルを作成するのに問題があります。

私のコンテンツは、サーバーが生成された主キーを持つエントリを文字列として識別するサーバーから取得されます。私の内部データベースには、(Android が必要とするように) Long の主キーがあります。

同期するときは、サーバーから配信されたキー (ここでは「backendId」) に基づいてリレーションを作成し、同期を簡単にする必要があります。

ORMlite では、リレーションシップを作成するために使用する列を指定できます。同じことを greendao 用に作成しようとしましたが、失敗しました。

これが私が試したことです:セクターは資産を持つことができます。「assetId」には、アセットの「backendId」に格納されている値が含まれている必要があります。

どうすればそれを達成できるのでしょうか?

その挿入の結果、「assetId」は資産テーブルの主キーですが、「backendId」にする必要があります。

何か案は?

0 投票する
1 に答える
990 参照

android - greenDao: Android の sqlite ファイルにデータを保存する

Androidスマートフォンのファイルシステムにあるsqliteファイルにデータを保存するための推奨される方法は何ですか? デバイスの再起動後もデータを復元するつもりです。"DaoMaster.createAllTables(db, true)" と "DaoMaster.createAllTables(db, false)" の違いは何ですか?

現在、MainActivity.java でこのコードを使用しています。

生成された DaoMaster.java を変更する必要がありました。

0 投票する
1 に答える
6572 参照

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 オブジェクトには適用されません)。

誰かがこれを解決する方法について何か考えを持っているなら、本当に感謝しています.

ありがとう。

0 投票する
1 に答える
2445 参照

android - GreenDao IndsertOrReplaceInTx はリストの最後の項目のみを挿入します

私はいくつかのPOJOSを持っており、それらのためにいくつかのテーブルを作成しています。それらはすべてうまく機能します。つまり、それらを挿入してロードできます...これを除いて:

私のブランドリストには6つの要素が含まれており、それらが異なっていると確信しています(ブレークポイントを置いて見ました)が、DBに挿入しようとするとgreenDao最後の要素だけが挿入されます。私のテーブルは空で、このステートメントはそれを埋めることを想定しています。

コード:

生成されたブランド コード:

スキーマを作成するためのコード:

そして最後に、それらを挿入する方法:

ブレークポイントを設定して確認するbrandlistと、6 つの要素があります。

ヘルプ、回避策、デバッグのヒント...何が問題なのか本当にわかりません。

どうもありがとう!!

編集:

私は非常に単純な(本当に単純だと信じています:-))ファイルからjsonを読み取り、それを解析してリストし、これでdbに挿入するテストプロジェクトを作成しましたが、問題が存在します。誰かが私の間違いを教えてもらえますか? 大変感謝します :-)。