マイアプリはSongVersions
は多くのTracks
を持つデータベースを使用し、多くの企業アップデートする方法。このman-to-manx関係はgreendaoによって生成され、これまでのところうまく動作します。のは、それをミュートするとしましょう - -Greendao:
は、しかし、今、私はトラックを更新しようとすると、更新は次のアプリの開始までwokringされます。これは、udpateがキャッシュされたトラックのリストにのみ反映されますが、データベースには永続化されないためです。
はここで、これまで(動作しない)// iterate through tracks for (Track track : mSongVersion.getTrackList()) { if (trackId.equals(track.getId())) { // mute specific track track.setMuted(muted); mSongVersion.update(); } }
SongVersion
とTrack
がgreendaoによってgenertated entitiyクラスである私のコードです。方法が、全く更新()Track
持っていない - - SongVersion
)は(更新を有する方法。だから私はSongVersion#update()を使って "全部"を更新して特定のトラックを更新しなければならないと考えていました。 しかし、この呼び出しはそのトラックの変更を無視してSongVersionを更新するだけです...
また、トラックリストをリセットして、キャッシュされていない値が干渉していないことを確認しました。 。
EDIT:
ここに役立つかもしれないいくつかのコードです。 (greendaoによって生成された!)
SongVersion :データベース生成するJavaの
/** Used for active entity operations. */ private transient SongVersionDao myDao; /** called by internal mechanisms, do not call yourself. */ public void __setDaoSession(DaoSession daoSession) { this.daoSession = daoSession; myDao = daoSession != null ? daoSession.getSongVersionDao() : null; } public void update() { if (myDao == null) { throw new DaoException("Entity is detached from DAO context"); } myDao.update(this); }
パーツ:
public static void main(String[] args) throws Exception { Schema schema = new Schema(1, "my.app.database"); Entity songVersion = schema.addEntity("SongVersion"); Entity track = schema.addEntity("Track"); // SongVersion fields w/o relations songVersion.setHasKeepSections(true); songVersion.addIdProperty().autoincrement(); songVersion.addStringProperty("name").notNull(); // Track fields w/o relations track.setHasKeepSections(true); track.implementsInterface("Comparable"); track.addIdProperty().autoincrement(); track.addBooleanProperty("muted").notNull(); // relations Property songVersionId = track.addLongProperty("songVersionId").notNull().getProperty(); songVersion.addToMany(track, songVersionId); }
これはまさに私の問題です。私はTrackDao(AbstractDaoの継承した更新メソッド)からupdate(Object)メソッドを使用することができましたが、なぜ生成された
SongVersion
が便利なupdate()メソッドをmyDaoフィールドとTrack
ではない。 – muetzenflo私はtrackDaoを使ってそれをテストしました。方法...それはSongVersion.update()メソッドの実装上の外観をとらずに言うことは容易ではありません – muetzenflo
- ()更新を生成したが、私はまだ不足しているについての説明のために幸せになると思います。コードのこの部分を追加できますか? –