gpt4 book ai didi

android - GreenDAO toMany 关系 - 目标实体顺序

转载 作者:行者123 更新时间:2023-11-30 02:18:15 25 4
gpt4 key购买 nike

我的模式中有一个 toMany 关系(“一个人有 1..N 只猫”)。如果我查询一个实体的 toMany-target 实体,我使用以下代码:

List<Cat> cats = human.getCatList();

返回的列表是否保证有序?如果是,取决于哪个属性?

附加信息(生成代码):

在我的模式(生成器)中,实体创建如下:

Entity human = schema.addEntity("human");
human.addIdProperty().autoincrement();

Entity cat = schema.addEntity("cat");
cat.addIdProperty().autoincrement();
pb = cat.addLongProperty("humanId");
pb.notNull();
pb.indexAsc(null, false);

human.addToMany(cat, pb.getProperty());

因此我认为顺序是由创建的索引(隐含地)定义的,但是查看 CatDao.java 显示索引是在没有定义顺序的情况下创建的:

"CREATE INDEX " + constraint + "IDX_CAT_HUMAN_ID ON CAT (HUMAN_ID);"

pb.indexAsc 更改为 pb.indexDesc 会更改索引名称,但不会更改列的索引顺序(参见:SQLite Syntax: indexed-column)。

那么 - 这是想要的行为吗?如何定义目标实体的顺序?

最佳答案

Is the returned list guaranteed to be ordered? If yes, dependant on which property?

如果是,则简短回答"is";长答案没有但:项目的顺序没有隐式定义,但可以在 toMany 关系中显式设置。

human.addToMany(cat, [...]).orderAsc([...]);

将在为人类实体创建的 Cat.java 中生成 ORDER BY 语句(参见 Cat#_queryHuman_CatList)。

I therefore thought the order is (implicitely) defined by the created index, but a look at CatDao.java showed the index is created without a defined order.

这似乎是想要的行为,因为,作为 SQLite Docs state : 每个列名后面都可以跟一个“ASC”或“DESC”关键字来指示排序顺序。排序顺序可能会也可能不会被忽略,具体取决于数据库文件格式 [...] - 假设 GreenDAO 支持旧的 Android 版本(因此支持旧的 SQLite 版本,请参阅 SO question/answer here)不 strong> 在索引上附加排序顺序很有意义。

关于android - GreenDAO toMany 关系 - 目标实体顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28945574/

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