Как реализовать отношения в Greendao?
Я новичок в Greendao. Я пишу генератор для создания сущностей в greendao. Итак, у меня есть две сущности Больница и пациент. Между ними есть отношения один ко многим. Таким образом, в больнице может быть много пациентов, но у одного пациента может быть только одна больница. Сейчас Property hospitalId = patient.addLongProperty("hospitalId").getProperty();
это добавляет столбец госпитализации в таблицу пациентов. а также
ToMany hospitalToPatients = hospital.addToMany(patient, hospitalId);
Эта линия создает отношения "один ко многим" между больницей и пациентом. Так в чем же заключается использование линий? patient.addToOne(hospital, hospitalId);
а также hospitalToPatients.setName("patients");
Как реализовать отношения один к одному, один ко многим, многие к одному и многие ко многим в greendao?
PS: я скопировал этот код с http://www.vertabelo.com/blog/technical-articles/a-comparison-of-android-orms
public class ProjectGenerator {
public static void main(String[] args) throws Exception {
Schema schema = new Schema(1, "com.example.project");
// hospital table
Entity hospital = schema.addEntity("Hospital");
hospital.addIdProperty();
hospital.addStringProperty("name");
// patient table
Entity patient = schema.addEntity("Patient");
patient.addIdProperty();
patient.addStringProperty("name");
Property hospitalId = patient.addLongProperty("hospitalId").getProperty();
// patient has a one assigned hospital
patient.addToOne(hospital, hospitalId);
// hospital has many patients
ToMany hospitalToPatients = hospital.addToMany(patient, hospitalId);
hospitalToPatients.setName("patients");
// trigger generation with path to the Android project
new DaoGenerator().generateAll(schema, "../project/src/main/java");
}
}
1 ответ
Так в чем польза линий patient.addToOne(hospital, hospitalId)
Эта линия создает oneToOne
связь между hospital
а также patient
,
hospitalToPatients.setName("patients")
Это просто установка названия внешнего ключа.
Как видите, вы уже внедрили one to one,one to many
отношения в вашем примере. patient.addToOne
это пример OneToOne
отношения hospital.addToMany
это пример OneToMany
отношения И GreenDao не поддерживает ManyToMany
отношения непосредственно для более подробной информации вы можете прочитать это.