gpt4 book ai didi

android - greenDAO 生成器给出了没有意义的控制台错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:27:17 25 4
gpt4 key购买 nike

总的来说,我对 Android 开发还很陌生,我什至从未使用过 greenDAO。但在我的生成器类(我在其中对我的实体建模)上花费了大量时间后,我终于能够生成类似于 GitHub 上给出的示例的东西。

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);
}
}

然后我将代码作为 java 应用程序运行以生成我的 DAO 文件,就像 greenDAO 上的文档所说的那样。文件已成功生成,但是我确实在 Eclipse 的控制台中得到了这一行:

Warning to-one property type does not match target key type: ToMany 'Transactions' from Checkbook to Transaction

自文件生成以来,我真的不确定是否需要担心。但是我不明白的是,为什么在我使用“对多”关系时会提到“对一”关系,正如我的代码中所见。 (支票簿实体中可以有很多交易实体,我打算使用每个支票簿实体的名称将交易与其关联。)

我是否需要返回并修复我的部分代码?请询问我是否需要澄清任何事情,感谢您抽出时间!

最佳答案

查看 greenDAO 为我生成的文件后,我找到了解决问题的方法。在我看来,addToMany() 方法需要将 Long 属性传递给它,而我使用的是 String 属性。所以我在生成器代码中更改了这两行:

Property cbName = transaction.addStringProperty("cb").notNull().getProperty();

ToMany cbToTrans = checkbook.addToMany(transaction, cbName);

为此:

Property checkbookId = transaction.addLongProperty("checkbookId").notNull().getProperty();

ToMany cbToTrans = checkbook.addToMany(transaction, checkbookId);

解决了我的问题。我的印象是我可以使用任何类型的属性将交易与支票簿联系起来,所以我尝试使用支票簿名称。

关于android - greenDAO 生成器给出了没有意义的控制台错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15910833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com