作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我刚刚开始使用 GreenRobot ORM 并开始使用数据库创建。我需要在两个表之间创建 N:M 关系。官方文件。说他们仍然不支持 N:M,所以我必须自己实现。
那么,假设我有 2 个实体:练习 和附件。它们看起来像:
Entity accessories = schema.addEntity("Accessories");
accessories.addIdProperty();
accessories.addStringProperty("name").unique().notNull();
accessories.addStringProperty("desc");
Entity exercise = schema.addEntity("Exercise");
exercise.addIdProperty();
exercise.addStringProperty("name");
exercise.addStringProperty("desc");
exercise.addByteProperty("level");
现在我想创建另一个实体 Exercise_Accessories,其中包含上述这些实体的 ID。我该怎么做?
谢谢。
最佳答案
是的,你是对的,你必须创建一个中间实体来保存对你想要在 N:M 关系中链接的对象的 ID 的引用。
创建实体并获取 id 的属性:
Entity exerciseAccesories = schema.addEntity("ExercisesAccesories")
exerciseAccesories.addIdProperty();
Property exerciseId = exerciseAccesories.addLongProperty("exercise").getProperty();
Property accessoryId = exerciseAccesories.addLongProperty("accessory").getProperty();
然后 link the properties :
accessories.addToMany(exerciseAccesories, accessoryId).setName("accessoryRef");
exercise.addToMany(exerciseAccesories, exerciseId).setName("exerciseRef");
更多关于 SQL因为这是模拟多对多关系的标准方法。
当然,当添加实体和附件时,这个实体行不会自动添加到数据库中。您需要手动插入它。
关于android - 绿道。 N :M relation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38240882/
我刚刚开始使用 GreenRobot ORM 并开始使用数据库创建。我需要在两个表之间创建 N:M 关系。官方文件。说他们仍然不支持 N:M,所以我必须自己实现。 那么,假设我有 2 个实体:练习 和
我是一名优秀的程序员,十分优秀!