Android Room使用Update,但未在实体中设置All Column



房间是否忽略实体发送更新表中为空的数据?!我想更新实体中Column的一部分,但我会在实体类中存储新数据并将其发送到DAO中的Update。是否替换该行中的其他数据?!

例如,如果实体类为:

@Entity(tableName = "ITEM_TABLE")
public class Item
{
@PrimaryKey
@NotNull
@ColumnInfo(name = "ID")
public int id;
@ColumnInfo(name = "COLUMN_TITLE")
public String title;
@ColumnInfo(name = "COLUMN_WEIGHT")
public String weight;
}

和更新请求如下:

Item item = new Item();
item.title = "new Title";
item.id = 2;
ItemDAO.update(item);

如果id为2的实体存在,并且它的权重为"250",如果我以这种方式更新它,会发生什么?!

尝试定义自己的DAO。

@Dao
public interface IDaoAccessStuff {
@Query("UPDATE SET COLUMN_TITLE=:text WHERE id=:id")
void UpdateColumnById (String text, int id);
...
@Insert
void insertStuff (Stuffstuff);
@Update
void updateExercise (Exercises exercise);
}

然后:

@Database (entities = {Stuff.class}, version = 1, exportSchema = false)
public abstract class AStuffDatabase extends RoomDatabase {
public abstract IDaoStuffExercise daoAccess();
}

最后:

private AStuffDatabase aStuffDatabase;
...
RoomDatabase.Builder<AExerciseDatabase> builder;
builder = Room.databaseBuilder(getApplicationContext(),
AStuffDatabase.class,
YOUR_DATABASE_NAME);
aStuffDatabase = builder.fallbackToDestructiveMigration().build();
... 
aStuffDatabase.daoAccess().updateStuff(yourString, theId);

此外,除非您指定列不应接受null值,如下所示:

@ColumnInfo(name = "COLUMN_TITLE")
@NonNull 
private String title;

最新更新