android - 使用 ORMLite 实现多对多关系的最佳方法是什么?

标签 android database relationship ormlite

我目前正在使用 ORMlite 来制作包含表格和关系的模型。 一种关系是多对多关系。实现它的最佳方式是什么?

更具体一点:

假设我有这两张表

Product
   id
   brand

Purchase
   id

一次购买可以有多个产品,一个产品可以在多个购买中。 使用 ORMLite 我可以在每个模型中都有一个 @ForeignCollectionField 但我认为它不会起作用。 我看到的唯一有效解决方案是创建第三个表 Product_Purchase 以将 Product 和 Purchase 与多对一关系联系起来。

大家怎么看?

最佳答案

@Romain 的 self 回答是正确的,但这里有更多信息供后人引用。正如他提到的,有一个多对多的例子ORMLite演示最佳方式的项目:

http://ormlite.com/docs/example-many

该示例使用包含两个对象的 id 的连接表来存储关系。在@Romain 的问题中,连接对象将同时具有 ProductPurchase 对象。比如:

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/

相关文章:

laravel - Eloquent 查询 : All News with same categories. 数据透视表

android - 如何在 View 寻呼机中自动更改图像,当它到达最后一张图像时,它应该自动进入第一张图像

Android 推送通知与 PendingIntent 覆盖以前

Android GPS 接近警报不起作用

java - 替换句子中的某些单词

具有唯一索引的 SQL 克隆记录

PHP 脚本无法识别给定的表

mysql - 主索引和辅助索引到底有什么区别?

php - Silverstripe 图像有很多

MySQL - 如何插入具有多对多关系的表