Próbowałem stworzyć model DB używając GreenDAO. problem zaczął się, gdy próbowałem utworzyć więcej niż jedną relację między różnymi tabelami.GreenDAO obsługuje wiele relacji między tabelami
zasadniczo mam tabelę Message
, tabelę Conversation
i tabelę User
.
Użytkownik ma listę wiadomości, a wiadomość ma rozmowę nadrzędną.
Próbowałem pisząc ten kod do tworzenia 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);
}
po uruchomieniu tego kodu, mam ten błąd:
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)
to właściwie meen, że nie można utworzyć więcej niż jedna relacja dla każdej tabeli w moim DB ?!
Czy muszę napisać wszystko ręcznie?
co spowoduje ten typ wyjątku? – thepoosh
greenDAO nie może obsłużyć FK składającego się z dwóch lub więcej właściwości. –
Mam ten wyjątek, gdy zapomniałem dodać kolumnę id do dodawanej jednostki za pomocą metody addToOne. – mharper