2012-10-23 9 views
12

Ich habe mit GreenDAO ein DB-Modell zu erstellen versucht. Das Problem begann, als ich versuchte, mehr als eine Beziehung zwischen verschiedenen Tabellen zu erstellen.GreenDAO unterstützen mehrere Beziehungen zwischen Tabellen

grundsätzlich habe ich eine Message Tabelle, eine Conversation Tabelle und eine User Tabelle.

der Benutzer hat eine Liste der Nachrichten und die Nachricht hat eine Mutter Gespräch.

Ich habe versucht, diesen Code zu schreiben für die DB-Erstellung:

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); 
    } 

nach diesem Code ausgeführt wird, habe ich diesen Fehler:

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) 

gehe diese meen eigentlich, dass ich mehr nicht schaffen kann, als eine Beziehung für jede Tabelle in meinem DB ?!

habe ich alles von Hand schreiben?

Antwort

4

Was Sie zu tun versuchen wird von greenDAO unterstützt und Ihr Code sieht gut aus, auch. Ich habe es in meinen Arbeitsbereich kopiert und es ist perfekt gelaufen. Ich vermute also, dass in dem Code, den du weggelassen hast, etwas nicht stimmt.

+0

, was diese Art von Ausnahme verursachen? – thepoosh

+0

greenDAO nicht umgehen kann FK bestehend aus zwei oder mehr Eigenschaften. –

+15

Ich bekam diese Ausnahme, als ich vergessen hatte, die Id-Spalte zu der Entität hinzuzufügen, die mit addToOne hinzugefügt wurde. – mharper

Verwandte Themen