猿问

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

我正在尝试将一个对象插入到我的房间数据库中,但似乎只插入了主键。当我尝试访问它们时,附加的字符串列表和整数列表都是空的。


实体


@Entity

public class DayMenu{

@PrimaryKey @NonNull

private String dayDate;



@TypeConverters(IntegerConverter.class)

private List<Integer> dayRecipesID;


@TypeConverters(StringConverter.class)

private List<String> dayRecipesTitle;


@Dao

public 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 只是插入实体主键。


慕沐林林
浏览 351回答 2
2回答

慕雪6442864

SQLite 不能有数据类型 List<>。也许您想要这些字段的一对多关系?一个 DayMenu 可以有多个 DayRecipes。
随时随地看视频慕课网APP

相关分类

Java
我要回答