2012-10-23 5 views
12

के बीच कई संबंधों का समर्थन करता है मैं ग्रीनडाओ का उपयोग कर डीबी मॉडल बनाने की कोशिश कर रहा हूं। समस्या तब शुरू हुई जब मैंने एक अलग टेबल के बीच एक से अधिक रिश्ते बनाने की कोशिश की।ग्रीनडाओ टेबल

मूल रूप से, मेरे पास 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) 

यह वास्तव में मीन मैं अधिक से अधिक नहीं बना सकते कि करता है मेरे डीबी में प्रत्येक टेबल के लिए एक रिश्ता ?!

क्या मुझे मैन्युअल रूप से सबकुछ लिखना है?

उत्तर

4

आप जो करने का प्रयास करते हैं वह GreenDAO द्वारा समर्थित है और आपका कोड भी अच्छा दिखता है। मैंने इसे अपने वर्कस्पेस में कॉपी किया और इसे पूरी तरह ठीक से निष्पादित किया। तो मुझे लगता है कि आपके द्वारा छोड़े गए कोड में कुछ गड़बड़ है।

+0

इस प्रकार के अपवाद का कारण क्या होगा? – thepoosh

+0

greenDAO एफके को दो या दो से अधिक गुणों से संभाल नहीं सकता है। –

+15

मुझे यह अपवाद मिला जब मैं addToOne का उपयोग करके जोड़ा गया इकाई में आईडी कॉलम जोड़ना भूल गया था। – mharper