2017-08-24 12 views
3

レルムテーブルからデータをクエリする際に、非常に奇妙な動作が発生しています。RealmResultsクエリで部分的な結果が返される - Android

私はOrderItemと呼ばれるオブジェクトは次のように定義されています

public class OrderItem extends RealmObject{ 

    @PrimaryKey 
    @Index 
    private long id; 

    //the rest of the fields here 
    //then getters and setters as usual 
} 

問題は非常に予測不可能です。場合によっては:

RealmResults<OrderItem> items = realm.where(OrderItem.class) 
     .equalTo("order_id", order_id) 
     .findAllSorted("id"); 

が不完全な結果、特に1行を返します。

このような部分的な結果がどのように返されるのか正確には分かりません。私は上記のテーブルに何行あるかは関係ありません!しばらく前に

NOTE

私は値をインクリメントしようとしたときだったどのように悪いアイデアを学んだまで、私は私のテーブルの主キーとしてStringタイプを使用していました。だから私は長い型に変わった。私は上記のクエリから部分的な結果を得ています!

本当にありがとうございます。この問題を緩和するのに役立つアイデアやヒント。

ありがとうございます!

Eenvincible!

+0

矛盾した結果が得られたクエリをどのスレッドで実行していますか?それは 'doInBackground()'なのでしょうか?一貫性のないクエリのコードを表示します。 – EpicPandaForce

+0

対応するgithubの問題https://github.com/realm/realm-java/issues/5153 –

+0

サービス(バックグラウンドサービスを正確に使用する)を使用して、serviceHandler内でコードを実行します。 – Eenvincible

答えて

0

プライマリキータイプの切り替え後にデータベースをクリアしましたか?私はレルムデータベースといくつかの同様のトラブルがあった

Realm.deleteRealm(); 

: あなたはでこれを行うことができます。新しいデータベースの削除と作成は助けになりました。

+0

スイッチは非常に長い時間でした。そうすることはできません。私は再びアプリを再インストールしました – Eenvincible

+0

私は参照してください。何が間違っているかも言うのは難しいです。今私の頭に浮かぶ唯一のことは、.findAllSorted()メソッドの別の変種を使うことです。 あなたの場合、それはなります: .findAllSorted( "id"、Sort.ASCENDING); – MTCZiomal

+0

ソート基準が結果の数に何らかの影響を与えるのはなぜですか? –

関連する問題