Ответ 1
То, что вы пытаетесь сделать, поддерживается greenDAO, и ваш код тоже выглядит хорошо. Я скопировал его в свое рабочее пространство, и он выполнен отлично. Поэтому я думаю, что что-то не так в коде, который вы оставили.
Я пытаюсь создать модель DB с помощью GreenDAO. проблема возникла, когда я попытался создать несколько отношений между разными таблицами.
В принципе, у меня есть таблица 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)
действительно ли это означает, что я не могу создать более одного отношения для каждой таблицы в моей БД?!
Нужно ли писать все вручную?
То, что вы пытаетесь сделать, поддерживается greenDAO, и ваш код тоже выглядит хорошо. Я скопировал его в свое рабочее пространство, и он выполнен отлично. Поэтому я думаю, что что-то не так в коде, который вы оставили.