为了账号安全,请及时绑定邮箱和手机立即绑定

Room Insert 只插入主键而不插入列

Room Insert 只插入主键而不插入列

慕沐林林 2021-08-04 16:33:21
我正在尝试将一个对象插入到我的房间数据库中,但似乎只插入了主键。当我尝试访问它们时,附加的字符串列表和整数列表都是空的。实体@Entitypublic class DayMenu{@PrimaryKey @NonNullprivate String dayDate;@TypeConverters(IntegerConverter.class)private List<Integer> dayRecipesID;@TypeConverters(StringConverter.class)private List<String> dayRecipesTitle;道@Daopublic interface DayMenuDao {@Insert(onConflict = OnConflictStrategy.REPLACE)void insertDayMenu(DayMenu dayMenu);@Query("select * from DayMenu")List<DayMenu> getAll();@Query("select * from DayMenu")LiveData<List<DayMenu>> getAllLD();@Query("select dayDate from DayMenu where DayMenu.dayDate = :day_date")DayMenu getFromDate(String day_date);}当我查看 dayMenu(如下)时,它会在我将它发送到插入之前,将有两个包含正确数据的列表。但是,当我调用 getAll()、getAllLD() 或 getFromDate() 时,该信息要么未插入,要么未恢复。主要活动        btnSave.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View view) {            if (etDate.getText().length() != 0) {                String currentDate = etDate.getText().toString();                DayMenu dayMenu = new DayMenu();                dayMenu.setDayDate(currentDate);                List<Integer> recIDs = new ArrayList<>();                List<String> recTits = new ArrayList<>();                StringBuilder sb = new StringBuilder();                int childCount = linearLayoutParent.getChildCount();                if (childCount > 1) {                    for (int i = 0; i < childCount - 1; i++) {                        View linearLayoutChild = linearLayoutParent.getChildAt(i);                        ViewGroup lLC = (ViewGroup) linearLayoutChild;                        Button recipeButton = (Button) lLC.getChildAt(0);                        recIDs.add(Integer.parseInt(recipeButton.getTag().toString()));                        recTits.add(recipeButton.getText().toString());                    }这将显示保存到数据库的日期,我已经能够使用其他方法查看日期。但是,当我尝试访问 recipeIds 和 titles 时,列表为空。我不太确定出了什么问题,似乎 insertDayMenu 只是插入实体主键。
查看完整描述

2 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

SQLite 不能有数据类型 List<>。也许您想要这些字段的一对多关系?一个 DayMenu 可以有多个 DayRecipes。


查看完整回答
反对 回复 2021-08-04
  • 2 回答
  • 0 关注
  • 350 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信