我一直在尋找解決方案來解決我的問題而沒有成功。android greendao只更新實體中的特定字段
我有一個應用程序,可以從不同的服務中獲取數據庫中特定實體的信息,因此我使用了greenDAOs insertOrReplace方法,因此只要實體已經存在於我的數據庫中,它就會被更新而不是重新創建。
到目前爲止這麼好。
的問題是..讓說,例如起見,我的實體被稱爲用戶,與場ID,標題和顯示名。
所以在第一個電話,我得到包含只有其ID和標題字段中輸入用戶JSON對象,所以我將其插入DB和自然DisplayName獲取插入爲NULL。
隨後從其他服務,我得到含有相同的用戶(同一ID字段)另一JSON,但它自帶的顯示名爲好,但不包括標題信息都沒有。
因此,無論何時我在由greenDAO自動生成的DAO對象上運行insertOrReplace,用戶都會更新,但由於標題信息不存在,所以當它更新時標題字段被重置爲NULL,所以我最終失去了數據。
不幸的是我無法改變從服務返回的數據,並沒有能夠解決這個問題。我很難相信沒有簡單的方法可以告訴DAO對象只更新某些字段,而不是全部更新。
我正在查看由greenDAO生成的代碼,並且在生成的dao對象中有一個bindValues方法,在查詢執行之前被調用,顯然它會從對象中過濾出NULL屬性,但是無論哪種方式用NULL值更新。
我能夠通過修改通過添加父類的一些方法而生成的最終的dao對象來想出某種修復方法,但我不認爲這是一個好的解決方案,因爲我必須這樣做所有的道對象。 (我知道可以定義一個自定義的超類,但這隻適用於實體對象而不適用於DAO)。
我會很感激,如果有人對我怎麼能解決這個任何想法,併爲長的解釋很抱歉,我只是想在我的問題清楚。
謝謝。