我目前正在使用 ORMlite 来制作包含表格和关系的模型。 一种关系是多对多关系。实现它的最佳方式是什么?
更具体一点:
假设我有这两张表
Product
id
brand
Purchase
id
一次购买可以有多个产品,一个产品可以在多个购买中。
使用 ORMLite 我可以在每个模型中都有一个 @ForeignCollectionField
但我认为它不会起作用。
我看到的唯一有效解决方案是创建第三个表 Product_Purchase 以将 Product 和 Purchase 与多对一关系联系起来。
大家怎么看?
最佳答案
@Romain 的 self 回答是正确的,但这里有更多信息供后人引用。正如他提到的,有一个多对多的例子ORMLite演示最佳方式的项目:
该示例使用包含两个对象的 id 的连接表来存储关系。在@Romain 的问题中,连接对象将同时具有 Product
和 Purchase
对象。比如:
public class ProductPurchase {
@DatabaseField(generatedId = true)
private int id;
@DatabaseField(foreign = true)
private Product product;
@DatabaseField(foreign = true)
private Purchase purchase;
...
}
id 字段是从创建表格的对象中提取的:
CREATE TABLE `userpost` (`id` INTEGER AUTO_INCREMENT , `user_id` INTEGER ,
`post_id` INTEGER , PRIMARY KEY (`id`) )
然后您使用内部查询来查找与每个 Purchase
关联的 Product
对象,反之亦然。详见示例项目中的 lookupPostsForUser()
方法。
围绕自动执行此操作进行了一些思考和设计工作,但目前 ORMLite 仅在内部处理一对多关系。
关于android - 使用 ORMLite 实现多对多关系的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9175198/