2012-10-23 15 views
12

私はGreenDAOを使用してDBモデルを作成しようとしています。問題は異なるテーブル間で複数の関係を作成しようとしたときに始まりました。GreenDAOはテーブル間の複数の関係をサポートします

基本的には、私はテーブル、Conversationテーブル、Userテーブルを持っています。

ユーザーにはメッセージの一覧があり、メッセージには親の会話があります。

私はDB作成するため、このコードを書いてみました:このコードを実行した後に

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) 

が、これは実際に私はより多くを作成することができないということミーンありません私のDBの各テーブルのための1つの関係?

私は手動ですべてを書かなければなりませんか?

答えて

4

あなたがしようとしていることはgreenDAOによってサポートされており、コードも見栄えがよいです。私はそれを私のワークスペースにコピーし、それは完璧にうまくいった。だから私はあなたが残したコードで何か間違っていると思う。

+0

このような例外はどのような原因ですか? – thepoosh

+0

greenDAOは、2つ以上のプロパティからなるFKを処理できません。 –

+15

addToOneを使用して追加されるエンティティにID列を追加することを忘れてしまったときに、この例外が発生しました。 – mharper

関連する問題