Tôi khá mới phát triển Android nói chung và thậm chí tôi chưa bao giờ sử dụng greenDAO. Nhưng sau khi dành nhiều thời gian làm việc cho lớp máy phát điện của tôi (nơi tôi lập mô hình thực thể của mình), cuối cùng tôi đã có thể tạo ra một cái gì đó trông giống như ví dụ được đưa ra trên GitHub.Trình tạo greenDAO cung cấp lỗi giao diện điều khiển không có ý nghĩa
import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Property;
import de.greenrobot.daogenerator.Schema;
import de.greenrobot.daogenerator.ToMany;
public class simbalDAOgen {
public static void main(String[] args) throws Exception {
Schema schema = new Schema(1, "com.bkp.simbal"); //Schema(Int version, String package name)
addCBTrans(schema); //Add the entities to the schema
new DaoGenerator().generateAll(schema, "../Simbal/src-gen", "../Simbal/src-test"); //Generate DAO files
}
private static void addCBTrans(Schema schema){
Entity checkbook = schema.addEntity("Checkbook");
checkbook.addIdProperty();
checkbook.addStringProperty("name").notNull();
checkbook.addDateProperty("dateModified");
checkbook.addStringProperty("balance"); // Use a string property because BigDecimal type should be used for currency
Entity transaction = schema.addEntity("Transaction");
transaction.setTableName("TRANS"); // "TRANSACTION" is a reserved SQLite keyword
transaction.addIdProperty();
transaction.addStringProperty("name");
transaction.addStringProperty("category");
Property transDate = transaction.addDateProperty("date").getProperty();
transaction.addStringProperty("amount"); // Again use string for BigDecimal type
transaction.addStringProperty("notes");
Property cbName = transaction.addStringProperty("cb").notNull().getProperty(); //What checkbook the transaction is in
ToMany cbToTrans = checkbook.addToMany(transaction, cbName); //Actually ties the transactions to their correct checkbooks
cbToTrans.setName("Transactions");
cbToTrans.orderAsc(transDate);
}
}
Sau đó, tôi chạy mã dưới dạng ứng dụng java để tạo tệp DAO, giống như tài liệu trên greenDAO nói. Các tệp đã được tạo thành công, tuy nhiên tôi đã nhận được dòng này trong bảng điều khiển trong Eclipse:
Warning to-one property type does not match target key type: ToMany 'Transactions' from Checkbook to Transaction
Tôi thực sự không chắc liệu tôi có cần phải quan tâm vì các tệp đã được tạo hay không. Nhưng những gì tôi không hiểu là lý do tại sao có đề cập đến một mối quan hệ "một-một" khi tôi đang sử dụng một "to-nhiều" mối quan hệ, như có thể được nhìn thấy trong mã của tôi. (Có thể có nhiều thực thể giao dịch trong thực thể séc, và tôi dự định sử dụng tên của từng thực thể séc để buộc các giao dịch với nó.)
Tôi có cần quay lại và sửa một phần mã của mình không? Vui lòng hỏi xem tôi có cần làm rõ điều gì không và cảm ơn thời gian của bạn!
Bạn nói đúng, đó là một thông điệp khá mơ hồ. Cảm ơn bạn cho cả câu hỏi và câu trả lời! – BeccaP