Мой внешний ключ не вставляется в базу данных, есть идеи, что я делаю неправильно? - PullRequest
0 голосов
/ 12 мая 2019

Когда пользователь щелкает форму, в моей базе данных создается строка. Все остальное работает, но значение внешнего ключа не вставляется.

Я создаю таблицы ниже:

db.execSQL("create table " + TermDbSchema.CourseTable.NAME + "(" +
                "_id integer primary key autoincrement, " +
                TermDbSchema.CourseTable.Cols.UUID + ", " +
                TermDbSchema.CourseTable.Cols.TITLE + ", " +
                TermDbSchema.CourseTable.Cols.START_DATE + ", " +
                TermDbSchema.CourseTable.Cols.END_DATE + ", " +
                TermDbSchema.CourseTable.Cols.CHOSEN_START_DATE + ", " +
                TermDbSchema.CourseTable.Cols.CHOSEN_END_DATE + ", " +

                TermDbSchema.CourseTable.Cols.COURSE_STATUS + ", " +
                TermDbSchema.CourseTable.Cols.OPTIONAL_NOTE + ", " +
                TermDbSchema.CourseTable.Cols.MENTOR_NAME + ", " +
                TermDbSchema.CourseTable.Cols.MENTOR_PHONE + ", " +
                TermDbSchema.CourseTable.Cols.MENTOR_EMAIL + ", " +
                TermDbSchema.CourseTable.Cols.COL_COURSE_TERM_REFERENCE + " INTEGER REFERENCES " + TermDbSchema.TermTable.NAME + "(_id) ON DELETE CASCADE ON UPDATE CASCADE" + //<<<<<<<<<< ADDED
                ")"
        );
        db.execSQL("create table " + TermDbSchema.AssessmentTable.NAME + "(" +
                "_id integer primary key autoincrement, " +
                TermDbSchema.AssessmentTable.Cols.UUID + ", " +
                TermDbSchema.AssessmentTable.Cols.TITLE + ", " +
                TermDbSchema.AssessmentTable.Cols.ASSESS_TYPE + ", " +
                TermDbSchema.AssessmentTable.Cols.DUE_DATE + ", " +
                TermDbSchema.AssessmentTable.Cols.GOAL_DATE + ", " +
                TermDbSchema.AssessmentTable.Cols.COL_ASSESS_COURSE_REFERENCE + " INTEGER REFERENCES " + TermDbSchema.CourseTable.NAME + "(_id) ON DELETE CASCADE ON UPDATE CASCADE" + //<<<<<<<<<< ADDED
                ")"
        );

Вот таблицы:


public static final class CourseTable {
        public static final String NAME = "courses";
        public static final class Cols {
            public static final String UUID = "uuid";
            public static final String TITLE = "title";
            public static final String START_DATE = "startdate";
            public static final String END_DATE = "enddate";
            public static final String CHOSEN_START_DATE = "chosenstartdate";
            public static final String CHOSEN_END_DATE = "chosenenddate";

            public static final String COURSE_STATUS = "coursestatus";
            public static final String OPTIONAL_NOTE = "optionalnote";
            public static final String MENTOR_NAME = "mentorname";
            public static final String MENTOR_PHONE = "mentorphone";
            public static final String MENTOR_EMAIL = "mentoremail";
            public static final String COL_COURSE_TERM_REFERENCE = "term_reference";

        }
    }
    public static final class AssessmentTable {
        public static final String NAME = "assessments";
        public static final class Cols {
            public static final String UUID = "uuid";
            public static final String TITLE = "title";
            public static final String ASSESS_TYPE = "assesstype";

            public static final String DUE_DATE = "duedate";
            public static final String GOAL_DATE = "goaldate";
           public static final String COL_ASSESS_COURSE_REFERENCE = "course_reference";
        }
    }

Вот обертка курсора, которую я сделал: Если честно, проблема может быть здесь. Я не уверен, как работают обертки курсора. Я подозреваю, что я сделал что-то не так:


public class AssessmentCursorWrapper extends CursorWrapper {
    public AssessmentCursorWrapper(Cursor cursor) {
        super(cursor);
    }
    public Assessment getAssessment() {
        String uuidString = getString(getColumnIndex(AssessmentTable.Cols.UUID));
        String title = getString(getColumnIndex(AssessmentTable.Cols.TITLE));
        String assesstype = getString(getColumnIndex(AssessmentTable.Cols.ASSESS_TYPE));
        long duedate = getLong(getColumnIndex(AssessmentTable.Cols.DUE_DATE));
        long goaldate = getLong(getColumnIndex(AssessmentTable.Cols.GOAL_DATE));
//this is the foreign key 
        int course_reference = getInt(getColumnIndex(AssessmentTable.Cols.COL_ASSESS_COURSE_REFERENCE));

        Assessment assessment = new Assessment(UUID.fromString(uuidString));
        assessment.setTitle(title);
        assessment.setAssessType(assesstype);
        assessment.setDueDate(new Date(duedate));
        assessment.setGoalDate(new Date(goaldate));

        assessment.setSelectAssessforCourse(course_reference);
        return assessment;
    }
}

Я создал оценочный класс, и пользователь нажимает кнопку, чтобы вставить значение внешнего ключа 1 только для проверки работоспособности.



public class Assessment {

    private int selectAssessforCourse;
    private UUID mID;
    private String mTitle;
    private String mAssessType;
    private int selectAssessforCourse;
public int getSelectAssessforCourse() {
        return selectAssessforCourse;
    }

    public void setSelectAssessforCourse(int selectAssessforCourse) {
        this.selectAssessforCourse = selectAssessforCourse;
    }
}

Когда пользователь нажимает кнопку, я использую setSelectAssessforCourse проверить и посмотреть, работает ли он. Я просто вставляю номер 1 в проверьте это, и идентификатор не будет вставлен.



mSaveAssessBtn.setOnClickListener(new View.OnClickListener() {
            @Override
                public void onClick(View v) {
                mAssessment.setTitle(mTitleField.getText().toString());
                mAssessment.setSelectAssessforCourse(1); // I insert 1 to see if the foreign key value of 1 gets inserted
                Intent myIntent = new Intent(getActivity(), AssessmentListActivity.class);
                startActivity(myIntent);
            }
        });

1 Ответ

1 голос
/ 13 мая 2019

Я не верю, что вам нужен CursorWrapper, цель CursorWraper - переопределить методы курсора, такие как getCount.

Я считаю, что вам нужен только курсор, например, вам, вероятно, просто нужно что-тостроки (чтобы получить все оценки вместе с курсом и термином для каждой оценки) : -

public Cursor getAllAssessmentsWithCourseAndTermdetails() {
    String tables = TermDbSchema.AssessmentTable.NAME +
            " JOIN " + TermDbSchema.CourseTable.NAME + " ON " +
            TermDbSchema.AssessmentTable.Cols.COL_ASSESS_COURSE_REFERENCE + " = " +
            TermDbSchema.CourseTable.NAME + "." + "_id" +
            " JOIN " + TermDbSchema.TermTable.NAME + " ON " +
            TermDbSchema.CourseTable.Cols.COL_COURSE_TERM_REFERENCE + " = " +
            TermDbSchema.TermTable.NAME + "." + "_id";
    return this.getWritableDatabase().query(tables,null,null,null,null,null,null);
}

Это соответствует SQL: -

SELECT * FROM assessments 
JOIN courses ON course_reference = courses._id 
JOIN terms ON term_reference = terms._id
  • (обратите внимание, префикс _id столбцов требуется в противном случае _id является неоднозначным, дополнительно НЕ используйте getColumnIndex (_id) , а для получения соответствующего значения используйтестолбец, который ссылается на столбец _id. Я считаю, что getColumnIndex всегда будет возвращать последнее совпадающее значение.

Вот рабочий пример, основанный на ваших определениях. Вспомогательный класс базы данных, используемый в этом примере:-

public class DBHelper extends SQLiteOpenHelper {

    public static final String DBNAME = "mydb";
    public static final int DBVERSION = 1;


    public DBHelper(Context context) {
        super(context, DBNAME, null, DBVERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table " + TermDbSchema.TermTable.NAME + "(" +
                "_id integer primary key autoincrement, " +
                TermDbSchema.TermTable.Cols.UUID + ", " +
                TermDbSchema.TermTable.Cols.TITLE + ", " +
                TermDbSchema.TermTable.Cols.START_DATE + ", " +
                TermDbSchema.TermTable.Cols.END_DATE +
                ")"
        );
        db.execSQL("create table " + TermDbSchema.CourseTable.NAME + "(" +
                "_id integer primary key autoincrement, " +
                TermDbSchema.CourseTable.Cols.UUID + ", " +
                TermDbSchema.CourseTable.Cols.TITLE + ", " +
                TermDbSchema.CourseTable.Cols.START_DATE + ", " +
                TermDbSchema.CourseTable.Cols.END_DATE + ", " +
                TermDbSchema.CourseTable.Cols.CHOSEN_START_DATE + ", " +
                TermDbSchema.CourseTable.Cols.CHOSEN_END_DATE + ", " +

                TermDbSchema.CourseTable.Cols.COURSE_STATUS + ", " +
                TermDbSchema.CourseTable.Cols.OPTIONAL_NOTE + ", " +
                TermDbSchema.CourseTable.Cols.MENTOR_NAME + ", " +
                TermDbSchema.CourseTable.Cols.MENTOR_PHONE + ", " +
                TermDbSchema.CourseTable.Cols.MENTOR_EMAIL + ", " +
                TermDbSchema.CourseTable.Cols.COL_COURSE_TERM_REFERENCE + " INTEGER REFERENCES " +
                TermDbSchema.TermTable.NAME + "(_id) ON DELETE CASCADE ON UPDATE CASCADE" + //<<<<<<<<<< ADDED
                ")"
        );
        db.execSQL("create table " + TermDbSchema.AssessmentTable.NAME + "(" +
                "_id integer primary key autoincrement, " +
                TermDbSchema.AssessmentTable.Cols.UUID + ", " +
                TermDbSchema.AssessmentTable.Cols.TITLE + ", " +
                TermDbSchema.AssessmentTable.Cols.ASSESS_TYPE + ", " +
                TermDbSchema.AssessmentTable.Cols.DUE_DATE + ", " +
                TermDbSchema.AssessmentTable.Cols.GOAL_DATE + ", " +
                TermDbSchema.AssessmentTable.Cols.COL_ASSESS_COURSE_REFERENCE + " INTEGER REFERENCES " + TermDbSchema.CourseTable.NAME + "(_id) ON DELETE CASCADE ON UPDATE CASCADE" + //<<<<<<<<<< ADDED
                ")"
        );
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

    @Override
    public void onConfigure(SQLiteDatabase db) {
        super.onConfigure(db);
        db.setForeignKeyConstraintsEnabled(true);

    }

    public long addTerm(String title, String start_date, String end_date) {
        ContentValues cv = new ContentValues();
        cv.put(TermDbSchema.TermTable.Cols.TITLE,title);
        cv.put(TermDbSchema.TermTable.Cols.START_DATE,start_date);
        cv.put(TermDbSchema.TermTable.Cols.END_DATE,end_date);
        return this.getWritableDatabase().insert(TermDbSchema.TermTable.NAME,null,cv);
    }

    public long addCourse(
            String title,
            String start_date,
            String end_date,
            String chosen_start_date,
            String chosen_end_date,
            String status, String note,
            String mentor_name,
            String mentor_phone,
            String mentor_email,
            long course_reference) {
        ContentValues cv = new ContentValues();
        cv.put(TermDbSchema.CourseTable.Cols.TITLE,title);
        cv.put(TermDbSchema.CourseTable.Cols.START_DATE,start_date);
        cv.put(TermDbSchema.CourseTable.Cols.END_DATE,end_date);
        cv.put(TermDbSchema.CourseTable.Cols.CHOSEN_START_DATE,chosen_start_date);
        cv.put(TermDbSchema.CourseTable.Cols.CHOSEN_END_DATE,chosen_end_date);
        cv.put(TermDbSchema.CourseTable.Cols.COURSE_STATUS,status);
        cv.put(TermDbSchema.CourseTable.Cols.OPTIONAL_NOTE,note);
        cv.put(TermDbSchema.CourseTable.Cols.MENTOR_NAME,mentor_name);
        cv.put(TermDbSchema.CourseTable.Cols.MENTOR_PHONE,mentor_phone);
        cv.put(TermDbSchema.CourseTable.Cols.MENTOR_EMAIL,mentor_email);
        cv.put(TermDbSchema.CourseTable.Cols.COL_COURSE_TERM_REFERENCE,course_reference);
        return this.getWritableDatabase().insert(TermDbSchema.CourseTable.NAME,null,cv);
    }

    public long addAssessment(
            String title,
            String assessType,
            String duedate,
            String goaldate,
            long course_reference) {
        ContentValues cv = new ContentValues();
        cv.put(TermDbSchema.AssessmentTable.Cols.TITLE, title);
        cv.put(TermDbSchema.AssessmentTable.Cols.ASSESS_TYPE,assessType);
        cv.put(TermDbSchema.AssessmentTable.Cols.DUE_DATE,duedate);
        cv.put(TermDbSchema.AssessmentTable.Cols.GOAL_DATE,goaldate);
        cv.put(TermDbSchema.AssessmentTable.Cols.COL_ASSESS_COURSE_REFERENCE,course_reference);
        return this.getWritableDatabase().insert(TermDbSchema.AssessmentTable.NAME,null,cv);
    }

    public Cursor getAllCoursesWithTermDetails() {
        String tables = TermDbSchema.CourseTable.NAME +
                " JOIN " + TermDbSchema.TermTable.NAME + " ON " +
                TermDbSchema.CourseTable.Cols.COL_COURSE_TERM_REFERENCE + " = " +
                TermDbSchema.TermTable.NAME + "." + "_id";
        return this.getWritableDatabase().query(tables,null,null,null,null,null,null);
    }

    public Cursor getAllAssessmentsWithCourseAndTermdetails() {
        String tables = TermDbSchema.AssessmentTable.NAME +
                " JOIN " + TermDbSchema.CourseTable.NAME + " ON " +
                TermDbSchema.AssessmentTable.Cols.COL_ASSESS_COURSE_REFERENCE + " = " +
                TermDbSchema.CourseTable.NAME + "." + "_id" +
                " JOIN " + TermDbSchema.TermTable.NAME + " ON " +
                TermDbSchema.CourseTable.Cols.COL_COURSE_TERM_REFERENCE + " = " +
                TermDbSchema.TermTable.NAME + "." + "_id";
        return this.getWritableDatabase().query(tables,null,null,null,null,null,null);
    }
}

Для проверки использовалось следующее: -

public class MainActivity extends AppCompatActivity {

    DBHelper mDBHlpr;
    ArrayList<Long> terms = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mDBHlpr = new DBHelper(this);
        addSometestingData();
        Cursor csr = mDBHlpr.getAllCoursesWithTermDetails();
        DatabaseUtils.dumpCursor(csr);
        csr = mDBHlpr.getAllAssessmentsWithCourseAndTermdetails();
        DatabaseUtils.dumpCursor(csr);
    }

    private void addSometestingData() {
        if (DatabaseUtils.queryNumEntries(mDBHlpr.getWritableDatabase(), TermDbSchema.TermTable.NAME) < 1) {
            addSomeTerms();
            addSomeCourses();
            addSomeAssessments();
        }
    }

    private void addSomeTerms() {
        terms.add(mDBHlpr.addTerm("TERM001","2019-01-01","2019-0331"));
        terms.add(mDBHlpr.addTerm("TERM002","2019-04-01","2019-06-30"));
        terms.add(mDBHlpr.addTerm("TERM003","2019-07-01","2019-09-30"));
        terms.add(mDBHlpr.addTerm("TERM004","2019-10-01","2019-12-31"));
    }

    private void addSomeCourses() {
        mDBHlpr.addCourse(
                "Math01",
                "2019-01-01","2019-03-14","2019-01-03","2019-03-07",
                "OK","blah",
                "Fred","0000000000","fred@email.com",
                terms.get(0));
        mDBHlpr.addCourse(
                "Math02",
                "2019-04-01","2019-06-14","2019-04-03","2019-06-07",
                "OK","blah",
                "Fred","0000000000","fred@email.com",
                terms.get(1));
        mDBHlpr.addCourse(
                "Math03",
                "2019-07-01","2019-09-14","2019-07-03","2019-09-07",
                "OK","blah",
                "Fred","0000000000","fred@email.com",
                terms.get(2));
        mDBHlpr.addCourse(
                "Math01",
                "2019-10-01","2019-12-14","2019-10-03","2019-12-07",
                "OK","blah",
                "Fred","0000000000","fred@email.com",
                terms.get(3));
    }

    private void  addSomeAssessments() {
        mDBHlpr.addAssessment("MATH02-A01","?","2019-01-31","2019-01-24",1);
        mDBHlpr.addAssessment("MATH01-A02","?","2019-02-28","2019-02-21",1);
        mDBHlpr.addAssessment("MATH01-A03","?","2019-03-31","2019-03-24",1);
        mDBHlpr.addAssessment("MATH02-A01","?","2019-04-30","2019-04-23",2);
        // and so on
    }
}

Результат

Первый дамп курсора

2019-05-13 11:22:06.344  I/System.out: >>>>> Dumping cursor android.database.sqlite.SQLiteCursor@76cd9ae
2019-05-13 11:22:06.345  I/System.out: 0 {
2019-05-13 11:22:06.345  I/System.out:    _id=1
2019-05-13 11:22:06.345  I/System.out:    uuid=null
2019-05-13 11:22:06.345  I/System.out:    title=Math01
2019-05-13 11:22:06.345  I/System.out:    startdate=2019-01-01
2019-05-13 11:22:06.345  I/System.out:    enddate=2019-03-14
2019-05-13 11:22:06.345  I/System.out:    chosenstartdate=2019-01-03
2019-05-13 11:22:06.346  I/System.out:    chosenenddate=2019-03-07
2019-05-13 11:22:06.346  I/System.out:    coursestatus=OK
2019-05-13 11:22:06.346  I/System.out:    optionalnote=blah
2019-05-13 11:22:06.346  I/System.out:    mentorname=Fred
2019-05-13 11:22:06.346  I/System.out:    mentorphone=0000000000
2019-05-13 11:22:06.346  I/System.out:    mentoremail=fred@email.com
2019-05-13 11:22:06.346  I/System.out:    term_reference=1
2019-05-13 11:22:06.346  I/System.out:    _id=1
2019-05-13 11:22:06.346  I/System.out:    uuid=null
2019-05-13 11:22:06.347  I/System.out:    title=TERM001
2019-05-13 11:22:06.347  I/System.out:    startdate=2019-01-01
2019-05-13 11:22:06.347  I/System.out:    enddate=2019-0331
2019-05-13 11:22:06.347  I/System.out: }
2019-05-13 11:22:06.347  I/System.out: 1 {
2019-05-13 11:22:06.347  I/System.out:    _id=2
2019-05-13 11:22:06.347  I/System.out:    uuid=null
2019-05-13 11:22:06.347  I/System.out:    title=Math02
2019-05-13 11:22:06.347  I/System.out:    startdate=2019-04-01
2019-05-13 11:22:06.347  I/System.out:    enddate=2019-06-14
2019-05-13 11:22:06.347  I/System.out:    chosenstartdate=2019-04-03
2019-05-13 11:22:06.347  I/System.out:    chosenenddate=2019-06-07
2019-05-13 11:22:06.347  I/System.out:    coursestatus=OK
2019-05-13 11:22:06.347  I/System.out:    optionalnote=blah
2019-05-13 11:22:06.348  I/System.out:    mentorname=Fred
2019-05-13 11:22:06.348  I/System.out:    mentorphone=0000000000
2019-05-13 11:22:06.348  I/System.out:    mentoremail=fred@email.com
2019-05-13 11:22:06.348  I/System.out:    term_reference=2
2019-05-13 11:22:06.348  I/System.out:    _id=2
2019-05-13 11:22:06.348  I/System.out:    uuid=null
2019-05-13 11:22:06.348  I/System.out:    title=TERM002
2019-05-13 11:22:06.348  I/System.out:    startdate=2019-04-01
2019-05-13 11:22:06.349  I/System.out:    enddate=2019-06-30
2019-05-13 11:22:06.349  I/System.out: }
2019-05-13 11:22:06.349  I/System.out: 2 {
2019-05-13 11:22:06.349  I/System.out:    _id=3
2019-05-13 11:22:06.349  I/System.out:    uuid=null
2019-05-13 11:22:06.349  I/System.out:    title=Math03
2019-05-13 11:22:06.349  I/System.out:    startdate=2019-07-01
2019-05-13 11:22:06.349  I/System.out:    enddate=2019-09-14
2019-05-13 11:22:06.349  I/System.out:    chosenstartdate=2019-07-03
2019-05-13 11:22:06.350  I/System.out:    chosenenddate=2019-09-07
2019-05-13 11:22:06.350  I/System.out:    coursestatus=OK
2019-05-13 11:22:06.350  I/System.out:    optionalnote=blah
2019-05-13 11:22:06.350  I/System.out:    mentorname=Fred
2019-05-13 11:22:06.350  I/System.out:    mentorphone=0000000000
2019-05-13 11:22:06.350  I/System.out:    mentoremail=fred@email.com
2019-05-13 11:22:06.350  I/System.out:    term_reference=3
2019-05-13 11:22:06.350  I/System.out:    _id=3
2019-05-13 11:22:06.350  I/System.out:    uuid=null
2019-05-13 11:22:06.350  I/System.out:    title=TERM003
2019-05-13 11:22:06.350  I/System.out:    startdate=2019-07-01
2019-05-13 11:22:06.350  I/System.out:    enddate=2019-09-30
2019-05-13 11:22:06.350  I/System.out: }
2019-05-13 11:22:06.350  I/System.out: 3 {
2019-05-13 11:22:06.350  I/System.out:    _id=4
2019-05-13 11:22:06.350  I/System.out:    uuid=null
2019-05-13 11:22:06.350  I/System.out:    title=Math01
2019-05-13 11:22:06.350  I/System.out:    startdate=2019-10-01
2019-05-13 11:22:06.350  I/System.out:    enddate=2019-12-14
2019-05-13 11:22:06.351  I/System.out:    chosenstartdate=2019-10-03
2019-05-13 11:22:06.351  I/System.out:    chosenenddate=2019-12-07
2019-05-13 11:22:06.351  I/System.out:    coursestatus=OK
2019-05-13 11:22:06.351  I/System.out:    optionalnote=blah
2019-05-13 11:22:06.351  I/System.out:    mentorname=Fred
2019-05-13 11:22:06.351  I/System.out:    mentorphone=0000000000
2019-05-13 11:22:06.351  I/System.out:    mentoremail=fred@email.com
2019-05-13 11:22:06.351  I/System.out:    term_reference=4
2019-05-13 11:22:06.351  I/System.out:    _id=4
2019-05-13 11:22:06.351  I/System.out:    uuid=null
2019-05-13 11:22:06.351  I/System.out:    title=TERM004
2019-05-13 11:22:06.351  I/System.out:    startdate=2019-10-01
2019-05-13 11:22:06.351  I/System.out:    enddate=2019-12-31
2019-05-13 11:22:06.351  I/System.out: }
2019-05-13 11:22:06.351  I/System.out: <<<<<

Второй (оценки)дамп курсора

  • 1-я строка Ссылка на курс >> >> 1035 *
  • 2-я строка Ссылка на курс >> >> 1038 *
  • 3-я строка Ссылка на курс >>2019-05-13 11:22:06.356 I/System.out: course_reference=1
  • 4-й ряд Ссылка на курс: >> 2019-05-13 11:22:06.358 I/System.out: course_reference=2

: -

2019-05-13 11:22:06.352  I/System.out: >>>>> Dumping cursor android.database.sqlite.SQLiteCursor@e3fe34f
2019-05-13 11:22:06.353  I/System.out: 0 {
2019-05-13 11:22:06.353  I/System.out:    _id=1
2019-05-13 11:22:06.353  I/System.out:    uuid=null
2019-05-13 11:22:06.353  I/System.out:    title=MATH02-A01
2019-05-13 11:22:06.353  I/System.out:    assesstype=?
2019-05-13 11:22:06.353  I/System.out:    duedate=2019-01-31
2019-05-13 11:22:06.353  I/System.out:    goaldate=2019-01-24
2019-05-13 11:22:06.353  I/System.out:    course_reference=1
2019-05-13 11:22:06.353  I/System.out:    _id=1
2019-05-13 11:22:06.353  I/System.out:    uuid=null
2019-05-13 11:22:06.353  I/System.out:    title=Math01
2019-05-13 11:22:06.353  I/System.out:    startdate=2019-01-01
2019-05-13 11:22:06.353  I/System.out:    enddate=2019-03-14
2019-05-13 11:22:06.353  I/System.out:    chosenstartdate=2019-01-03
2019-05-13 11:22:06.354  I/System.out:    chosenenddate=2019-03-07
2019-05-13 11:22:06.354  I/System.out:    coursestatus=OK
2019-05-13 11:22:06.354  I/System.out:    optionalnote=blah
2019-05-13 11:22:06.354  I/System.out:    mentorname=Fred
2019-05-13 11:22:06.354  I/System.out:    mentorphone=0000000000
2019-05-13 11:22:06.354  I/System.out:    mentoremail=fred@email.com
2019-05-13 11:22:06.354  I/System.out:    term_reference=1
2019-05-13 11:22:06.354  I/System.out:    _id=1
2019-05-13 11:22:06.354  I/System.out:    uuid=null
2019-05-13 11:22:06.354  I/System.out:    title=TERM001
2019-05-13 11:22:06.354  I/System.out:    startdate=2019-01-01
2019-05-13 11:22:06.354  I/System.out:    enddate=2019-0331
2019-05-13 11:22:06.354  I/System.out: }
2019-05-13 11:22:06.354  I/System.out: 1 {
2019-05-13 11:22:06.354  I/System.out:    _id=2
2019-05-13 11:22:06.354  I/System.out:    uuid=null
2019-05-13 11:22:06.354  I/System.out:    title=MATH01-A02
2019-05-13 11:22:06.354  I/System.out:    assesstype=?
2019-05-13 11:22:06.354  I/System.out:    duedate=2019-02-28
2019-05-13 11:22:06.354  I/System.out:    goaldate=2019-02-21
2019-05-13 11:22:06.355  I/System.out:    course_reference=1
2019-05-13 11:22:06.355  I/System.out:    _id=1
2019-05-13 11:22:06.355  I/System.out:    uuid=null
2019-05-13 11:22:06.355  I/System.out:    title=Math01
2019-05-13 11:22:06.355  I/System.out:    startdate=2019-01-01
2019-05-13 11:22:06.355  I/System.out:    enddate=2019-03-14
2019-05-13 11:22:06.355  I/System.out:    chosenstartdate=2019-01-03
2019-05-13 11:22:06.355  I/System.out:    chosenenddate=2019-03-07
2019-05-13 11:22:06.355  I/System.out:    coursestatus=OK
2019-05-13 11:22:06.355  I/System.out:    optionalnote=blah
2019-05-13 11:22:06.355  I/System.out:    mentorname=Fred
2019-05-13 11:22:06.355  I/System.out:    mentorphone=0000000000
2019-05-13 11:22:06.355  I/System.out:    mentoremail=fred@email.com
2019-05-13 11:22:06.355  I/System.out:    term_reference=1
2019-05-13 11:22:06.355  I/System.out:    _id=1
2019-05-13 11:22:06.355  I/System.out:    uuid=null
2019-05-13 11:22:06.355  I/System.out:    title=TERM001
2019-05-13 11:22:06.355  I/System.out:    startdate=2019-01-01
2019-05-13 11:22:06.355  I/System.out:    enddate=2019-0331
2019-05-13 11:22:06.355  I/System.out: }
2019-05-13 11:22:06.355  I/System.out: 2 {
2019-05-13 11:22:06.356  I/System.out:    _id=3
2019-05-13 11:22:06.356  I/System.out:    uuid=null
2019-05-13 11:22:06.356  I/System.out:    title=MATH01-A03
2019-05-13 11:22:06.356  I/System.out:    assesstype=?
2019-05-13 11:22:06.356  I/System.out:    duedate=2019-03-31
2019-05-13 11:22:06.356  I/System.out:    goaldate=2019-03-24
2019-05-13 11:22:06.356  I/System.out:    course_reference=1
2019-05-13 11:22:06.356  I/System.out:    _id=1
2019-05-13 11:22:06.356  I/System.out:    uuid=null
2019-05-13 11:22:06.356  I/System.out:    title=Math01
2019-05-13 11:22:06.356  I/System.out:    startdate=2019-01-01
2019-05-13 11:22:06.356  I/System.out:    enddate=2019-03-14
2019-05-13 11:22:06.356  I/System.out:    chosenstartdate=2019-01-03
2019-05-13 11:22:06.356  I/System.out:    chosenenddate=2019-03-07
2019-05-13 11:22:06.357  I/System.out:    coursestatus=OK
2019-05-13 11:22:06.357  I/System.out:    optionalnote=blah
2019-05-13 11:22:06.357  I/System.out:    mentorname=Fred
2019-05-13 11:22:06.357  I/System.out:    mentorphone=0000000000
2019-05-13 11:22:06.357  I/System.out:    mentoremail=fred@email.com
2019-05-13 11:22:06.357  I/System.out:    term_reference=1
2019-05-13 11:22:06.357  I/System.out:    _id=1
2019-05-13 11:22:06.357  I/System.out:    uuid=null
2019-05-13 11:22:06.357  I/System.out:    title=TERM001
2019-05-13 11:22:06.357  I/System.out:    startdate=2019-01-01
2019-05-13 11:22:06.357  I/System.out:    enddate=2019-0331
2019-05-13 11:22:06.357  I/System.out: }
2019-05-13 11:22:06.358  I/System.out: 3 {
2019-05-13 11:22:06.358  I/System.out:    _id=4
2019-05-13 11:22:06.358  I/System.out:    uuid=null
2019-05-13 11:22:06.358  I/System.out:    title=MATH02-A01
2019-05-13 11:22:06.358  I/System.out:    assesstype=?
2019-05-13 11:22:06.358  I/System.out:    duedate=2019-04-30
2019-05-13 11:22:06.358  I/System.out:    goaldate=2019-04-23
2019-05-13 11:22:06.358  I/System.out:    course_reference=2
2019-05-13 11:22:06.358  I/System.out:    _id=2
2019-05-13 11:22:06.358  I/System.out:    uuid=null
2019-05-13 11:22:06.358  I/System.out:    title=Math02
2019-05-13 11:22:06.358  I/System.out:    startdate=2019-04-01
2019-05-13 11:22:06.358  I/System.out:    enddate=2019-06-14
2019-05-13 11:22:06.358  I/System.out:    chosenstartdate=2019-04-03
2019-05-13 11:22:06.358  I/System.out:    chosenenddate=2019-06-07
2019-05-13 11:22:06.358  I/System.out:    coursestatus=OK
2019-05-13 11:22:06.358  I/System.out:    optionalnote=blah
2019-05-13 11:22:06.359  I/System.out:    mentorname=Fred
2019-05-13 11:22:06.359  I/System.out:    mentorphone=0000000000
2019-05-13 11:22:06.359  I/System.out:    mentoremail=fred@email.com
2019-05-13 11:22:06.359  I/System.out:    term_reference=2
2019-05-13 11:22:06.359  I/System.out:    _id=2
2019-05-13 11:22:06.359  I/System.out:    uuid=null
2019-05-13 11:22:06.359  I/System.out:    title=TERM002
2019-05-13 11:22:06.359  I/System.out:    startdate=2019-04-01
2019-05-13 11:22:06.359  I/System.out:    enddate=2019-06-30
2019-05-13 11:22:06.359  I/System.out: }
2019-05-13 11:22:06.359  I/System.out: <<<<<

PS У меня нет проблем с настройкойUUID

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...