Tôi đã cố gắng tạo mô hình DB bằng GreenDAO. vấn đề bắt đầu khi tôi cố tạo nhiều mối quan hệ giữa các bảng khác nhau.GreenDAO hỗ trợ nhiều mối quan hệ giữa các bảng
về cơ bản, tôi có một bảng Message
, một bảng Conversation
và một bảng User
.
Người dùng có danh sách thư và thư có cuộc hội thoại gốc.
Tôi cố gắng viết mã này để tạo 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);
}
sau khi chạy đoạn mã này, tôi đã nhận lỗi này:
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)
Điều này thực sự meen rằng tôi không thể tạo ra nhiều hơn một mối quan hệ cho mỗi bảng trong DB của tôi ?!
tôi có phải viết mọi thứ theo cách thủ công không?
điều gì sẽ gây ra loại ngoại lệ này? – thepoosh
greenDAO không thể xử lý FK bao gồm hai hoặc nhiều thuộc tính. –
Tôi nhận được ngoại lệ này khi tôi đã quên thêm cột id vào thực thể được thêm bằng cách sử dụng addToOne. – mharper