网上对greendao介绍比较少,且大多都是对同一篇文章的转载,其实我也是小白,在实际项目中对于greendao创建关系运用过程中出现了一些问题,比如在我的项目中所有实体类的primaryKey都是objectId,发现使用网上的教程,生成的实体文件和dao文件会出错,原因是字段命名冲突,例如我有这样一个需求,一个user实体,他有个friends的list,那我是怎么创建关系的呢?
Entity user = schema.addEntity("User");
Property id = user.addStringProperty("objectId").primaryKey().getProperty();
user.addToMany(user,id,"friends");
此时就会发现,User实体中只有getFriends()这个方法,那么怎么插入friends数据呢,是不行的,是因为greendao在建立关系时使用的addToMany()方法的第二个参数的字段名建立一个外键,id的字段名是objectId,而此时user的primarykey字段名也是objectId,greendao扫描到了objectId已经存在,所以就不在创建外键了,ok,那怎么解决呢
Entity user = schema.addEntity("User");
Property id = user.addStringProperty("objectId").primaryKey().getProperty();
user.addToMany(user,user.addStringProperty("friendId").getProperty(),"friends");
这时你就会发现在user实体中多了个userId字段,如果你要插入数据执行
User user1 = new User("123);
//执行插入操作,此处省略
User user2 = new User("456");
user2.setFriendId(user1.getObjectId());
//执行插入操作
这是一对多关系的建立,一对一和这个相识