2012-10-23 4 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) 

실제로 MEEN이 나는 이상을 만들 수 없습니다 않습니다 내 DB에 각 테이블에 대한 하나의 관계?!

모든 것을 수동으로 작성해야합니까?

답변

4

당신이하려고하는 것은 greenDAO에서 지원되며 코드도 좋게 보입니다. 내 작업 영역에 복사하고 완벽하게 잘 실행됩니다. 그래서 당신이 빠뜨린 코드에서 뭔가 잘못되었다고 생각합니다.

+0

이 예외는 무엇이 발생합니까? – thepoosh

+0

greenDAO는 두 개 이상의 속성으로 구성된 FK를 처리 할 수 ​​없습니다. –

+15

addToOne을 사용하여 추가되는 엔티티에 id 열을 추가하는 것을 잊었을 때이 예외가 발생했습니다. – mharper

관련 문제