android - GreenDAO 支持表之间的多种关系

标签 android android-sqlite greendao

我一直在尝试使用 GreenDAO 创建数据库模型。当我试图在不同的表之间创建多个关系时,问题就出现了。

基本上,我有一个Message 表、一个Conversation 表和一个User 表。

用户有一个消息列表,消息有一个父对话。

我尝试编写这段代码来创建数据库:

    private static void addUser(Schema schema) {
            user = schema.addEntity("User");
            userId = user.addIdProperty().getProperty();
            user.addStringProperty("facebookId").unique().index();

            user.addStringProperty("firstName");
            user.addStringProperty("lastName");
            user.addStringProperty("fullName");
            user.addStringProperty("photoUrl");
    }

    private static void addMessage(Schema schema) {
            message = schema.addEntity("Message");
            messageId = message.addIdProperty().getProperty();
            message.addStringProperty("messageId").primaryKey();

            message.addDateProperty("date");
            message.addStringProperty("content");
            message.addStringProperty("typeString");
    }

    private static void addConversation(Schema schema) {
          conversation = schema.addEntity("Conversation");
          conversation.addIdProperty();

          conversation.addStringProperty("conversationId");
          // REST OF THE CODE
    }

    private static void fakeRelationship(Schema schema) {
            Property author = message.addLongProperty("author").getProperty();
            Property parent = message.addLongProperty("parent").getProperty();

            message.addToOne(user, author);
            message.addToOne(conversation, parent);

            user.addToMany(message, author);
            conversation.addToMany(message, parent);
    }

运行这段代码后,我得到了这个错误:

Exception in thread "main" java.lang.RuntimeException: Currently only single FK columns are supported: ToOne 'parent' from Message to Conversation
at de.greenrobot.daogenerator.ToOne.init3ndPass(ToOne.java:91)
at de.greenrobot.daogenerator.Entity.init3rdPassRelations(Entity.java:557)
at de.greenrobot.daogenerator.Entity.init3ndPass(Entity.java:550)
at de.greenrobot.daogenerator.Schema.init3ndPass(Schema.java:185)
at de.greenrobot.daogenerator.DaoGenerator.generateAll(DaoGenerator.java:94)
at de.greenrobot.daogenerator.DaoGenerator.generateAll(DaoGenerator.java:79)
at com.glidetalk.dao.generator.GlideDaoGenerator.main(GlideDaoGenerator.java:27)

这是否实际上意味着我不能为我的数据库中的每个表创建一个以上的关系?!

我必须手动编写所有内容吗?

最佳答案

greenDAO 支持您尝试做的事情,您的代码看起来也不错。我将它复制到我的工作区,并且执行得非常好。所以我猜你遗漏的代码有问题。

关于android - GreenDAO 支持表之间的多种关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13032987/

相关文章:

java - Android Http ContentLength 始终为 -1

python - 使用 FFMPEG 从 Android 流式传输图像

android - 使用like的cursorloader选择查询

android - 如何使用 Android Room 创建一个包含两个或多个外键的表?

android - GreenDao Generator 类在生成模型和 Dao 类时出错。

java - Greendao - 字符串属性比较应该不区分大小写

android - 发出 Paging3 流后无法收集任何流

Android Widget 并点击 Listener

java - 无法从另一个 Activity 的数据库中导出 SQLite 数据库中的数据

android - 如何将 List<String> 属性添加到我的 greendao 生成器?