如何解决如何在具有多对多关系的Android Room中插入交汇点?
我正在尝试在“餐”中获取“菜”的列表。 我创建了一个实体“ dish”,一个实体“ Meal”和一个实体“ dishMealJunction”,其中包含菜肴和餐食的ID。 我还制作了一个POJO来定义两者之间的关系。
但是,当我尝试插入一顿我认为带有菜式的餐点时:
Meal dinner1 = new Meal(Constants.DINNER,5,today);
List<dish> dishList = new ArrayList<dish>();
dishList.add(fish);
dishList.add(rice);
dishList.add(cookies);
mviewmodel.insertMeal(dinner1,dishList);
或这种方式:
MealdishJunction mdj = new MealdishJunction(cookies.getdishId(),dinner1.getMealId());
MealdishJunction mdj2 = new MealdishJunction(rice.getdishId(),dinner1.getMealId());
mviewmodel.insertMealdish(mdj);
mviewmodel.insertMealdish(mdj2);
它不会保存每餐的菜肴清单:
ld_mealdish = mviewmodel.getLd_latestMeal();
adapter = new RecAdapter(this);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new linearlayoutmanager(this));
ld_mealdish.observe(this,new Observer<Mealdish>() {
@Override
public void onChanged(Mealdish mealdish) {
if (mealdish != null) {
tv_meal_name.setText(mealdish.meal.getDate().toString()); //**returns meal**
List<dish> dishList = mealdish.dishes; //**returns empty list**
adapter.setmNamables(dishList);
}
}
});
我怎么了?
进餐班:
@Entity(tableName = "meal_table")
public class Meal {
@PrimaryKey(autoGenerate = true)
private long mealId;
@ColumnInfo(name = "din_lun")
private int din_lun;
@ColumnInfo(name = "amount")
private int amount;
@ColumnInfo(name="date")
private Date date;
public Meal(int din_lun,int amount,Date date) {
this.din_lun = din_lun;
this.amount = amount;
this.date = date;
}
....//getters and setters
}
dish.class:
@Entity(tableName = "dish_table")
public class dish {
@PrimaryKey(autoGenerate = true)
private long dishId;
@ColumnInfo(name = "name")
private String name;
@ColumnInfo(name = "type")
private String type;
@ColumnInfo(name = "exclusive")
private int exclusive;
@ColumnInfo(name= "dmp")
private int dmp;
public dish(String name,String type,int exclusive,int dmp) {
this.name = name;
this.type = type;
this.exclusive = exclusive;
this.dmp = dmp;
}
... //getters and setters
MealdishJunction.class:
@Entity(primaryKeys = {"dishId","mealId"})
public class MealdishJunction {
public long dishId;
public long mealId;
public MealdishJunction(long dishId,long mealId) {
this.dishId = dishId;
this.mealId = mealId;
}
// .... getters and setters
Mealdish.class:
public class Mealdish {
@Embedded public Meal meal;
@Relation(
parentColumn = "mealId",entityColumn = "dishId",associateBy = @Junction(MealdishJunction.class)
)
public List<dish> dishes;
}
道斯:
@Dao
public interface dishDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertdish(dish dish);
@Transaction
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insert(Meal meal,List<dish> dishes);
@Insert(entity= MealdishJunction.class,onConflict = OnConflictStrategy.REPLACE)
void insert(MealdishJunction mealdishJunction);
@Transaction
@Query("SELECT * FROM meal_table ORDER BY mealId DESC LIMIT 1")
LiveData<Mealdish> getLatestMeal();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。