Android 房间使用更新但未在实体中设置所有列
Android Room using Update but not set All Column in entity
Room Ignore 数据是否在 Entity Send for Update 中为空 table?!
我想更新实体中的部分列,但我想在实体 class 中存储新数据并将其发送到 DAO 中的更新是否替换该行中的其他数据?!
例如,如果实体 Class 是:
@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);
此外,除非您指定该列不应接受空值,如下所示:
@ColumnInfo(name = "COLUMN_TITLE")
@NonNull
private String title;
Room Ignore 数据是否在 Entity Send for Update 中为空 table?! 我想更新实体中的部分列,但我想在实体 class 中存储新数据并将其发送到 DAO 中的更新是否替换该行中的其他数据?!
例如,如果实体 Class 是:
@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);
此外,除非您指定该列不应接受空值,如下所示:
@ColumnInfo(name = "COLUMN_TITLE")
@NonNull
private String title;