如何在Greendao实施关系?

时间:2016-10-21 02:55:30

标签: android greendao greendao-generator greendao3

我是Greendao的新手。我正在为greendao生成实体编写一个生成器。所以,我有两个实体医院和患者。他们之间有一对多的关系。因此,医院可以有很多患者,但一名患者只能有一家医院。现在Property hospitalId = patient.addLongProperty("hospitalId").getProperty();这会在患者餐桌上添加一个hospitalid列。和

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 个答案:

答案 0 :(得分:-1)

那么行的用途是什么 patient.addToOne(hospital, hospitalId)

此行在oneToOnehospital之间创建patient关系。

hospitalToPatients.setName("patients")   

这只是设置外键的名称。

如您所见,您已在示例中实现了实现one to one,one to many关系。 patient.addToOneOneToOne关系的一个示例。 hospital.addToManyOneToMany关系的一个示例。并且greenDao不直接支持ManyToMany关系,您可以阅读更多详细信息this