Genel olarak Android geliştirmede oldukça yeniyim ve hiç GreenDAO kullanmamıştım. Fakat jeneratör sınıfım üzerinde çok fazla zaman harcadıktan sonra (varlıklarımı modellediğim yer), sonunda GitHub'ta verilen örneğe benzeyen bir şey üretebildim.greenDAO jeneratörü, mantıklı olmayan konsol hatası veriyor
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);
}
}
Sonra greenDAO üzerinde dokümantasyon için yazdığı gibi benim DAO dosyaları oluşturmak için bir java uygulaması olarak kod koştu.
Warning to-one property type does not match target key type: ToMany 'Transactions' from Checkbook to Transaction
Gerçekten ben dosyaları oluşturulduktan sonra endişe etmesine gerek emin değilim: dosyaları başarıyla üretildi, ancak Eclipse konsolunda bu çizgiyi aldım. Ama anlamadığım şey, kodumda görüldüğü gibi, "çoktan" bir ilişki kullandığımda neden "bire bir" ilişkiden bahsedildiğidir. (Çek defteri varlığında çok sayıda işlem varlıkları olabilir ve işlemleri kontrol etmek için her çek defteri varlığının adını kullanmak istiyorum.)
Geri dönüp kodumun bir kısmını düzeltmem gerekiyor mu? Lütfen herhangi bir şeyi açıklığa kavuşturmam gerekip gerekmediğini sorun ve zaman ayırdığınız için teşekkürler!
Haklısınız, bu oldukça belirsiz bir mesaj. Hem soru hem de cevap için teşekkürler! – BeccaP